我的Django
项目结构是:
/proj
/frontend
/server
/proj
/app1
/app2
manage.py
如何运行python manage.py startapp app_name
以便我新创建的应用程序位于/server
目录中?我尝试在django-admin.py startapp appname
目录中运行server
来创建应用,但我最终会遇到此错误:
$ ./manage.py runserver
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/core/management/__init__.py", line 351, in execute_from_command_line
utility.execute()
File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/core/management/__init__.py", line 343, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/core/management/__init__.py", line 177, in fetch_command
commands = get_commands()
File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/utils/lru_cache.py", line 101, in wrapper
result = user_function(*args, **kwds)
File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/core/management/__init__.py", line 72, in get_commands
for app_config in reversed(list(apps.get_app_configs())):
File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/apps/registry.py", line 137, in get_app_configs
self.check_apps_ready()
File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/apps/registry.py", line 124, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
答案 0 :(得分:34)
您可以在/server/appname
appname
之后指定destination
目录的路径,即startapp <app_label> [destination] # startapp command usage
,即创建Django app目录结构的位置。
/server/appname
为。中的给定应用名称创建Django应用程序目录结构 当前目录或给定目的地。
如果仅提供应用名称,则将在中创建应用目录 当前的工作目录。
如果提供了可选目的地,Django将使用该现有目的地 目录而不是创建新的
因此,您可以将destination
目录的路径指定为django-admin.py startapp appname [destination] # specify destination
值。
appname
您需要做什么?
1。您需要先在/server
内创建目录mkdir /server/appname # create directory from root level
。
startapp
2. 然后,运行django-admin.py startapp appname ./server/appname
命令创建应用。
{{1}}
答案 1 :(得分:2)
我总是按照Two Scoops of Django的设计将应用程序放在内部文件夹中(该文件夹与Django创建的项目名称相同,与Django创建的文件夹相同),该设计类似于您想要执行的操作。如您先前的答案所述,当您要创建新应用时,可以使用
python ../manage.py startapp my_new_app
在要创建应用程序的文件夹中。另一件事,就是我所做的甚至更容易的事情是,您可以运行
django-admin startapp my_new_app
从应用程序的内部文件夹中,它将起作用。
答案 2 :(得分:1)
我发现最简单的方法是进入server
文件夹并创建一个__init__.py
文件:
touch __init__.py
然后,创建您想要的任何应用程序:
django-admin startapp {{APP NAME}}
答案 3 :(得分:0)
如果您已经在server
目录中,则可以运行
python ../manage.py startapp appname
appname
将在server
目录而不是项目根目录中创建。
答案 4 :(得分:0)
要在Django项目中创建新应用。
第一
第二:
django-admin startapp <new_app_name>
现在,您可以检查以给定名称创建的新应用。
答案 5 :(得分:0)
使用管理文件的绝对路径对我来说很好,例如从目标文件夹运行的示例
python /home/user/project_name/manage.py startupapp app_name
答案 6 :(得分:0)
如果您使用 cookiecutter-django 启动项目,那么下面的链接中给出了步骤。
与我在此处看到的已接受答案和其他答案的不同之处在于,您需要在 apps.py 中更改应用程序的名称作为额外步骤。
https://github.com/pydanny/cookiecutter-django/issues/1725#issuecomment-407493176
复制粘贴到这里:
1 - create the <name-of-the-app> app with python manage.py startapp
2 - move <name-of-the-app> directory to <project_slug> directory
3 - edit <project_slug>/<name-of-the-app>/apps.py and
change name = "<name-of-the-app>" to name = "<project_slug>.<name-of-the-app>"
4 - add "<project_slug>.<name-of-the-app>.apps.<NameOfTheAppConfigClass>", on your LOCAL_APPS on config/settings/base.py
此处