Startapp с manage.py для создания приложения в другом каталоге
Моя структура проекта 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.
Ответы
Ответ 1
Вы можете указать путь к каталогу /server/appname
после appname
как destination
, в котором будет создана структура каталога приложения Django.
Из startapp
docs:
startapp <app_label> [destination] # startapp command usage
Создает структуру каталога приложения Django для данного имени приложения в текущий каталог или заданный пункт назначения.
Если указано только имя приложения, каталог приложения будет создан в текущий рабочий каталог.
Если предоставляется дополнительный пункт назначения, Django будет использовать существующее вместо создания нового
Итак, вы можете указать путь к вашему каталогу /server/appname
как значение destination
.
django-admin.py startapp appname [destination] # specify destination
Что вам нужно сделать?
1. Сначала вам нужно создать каталог appname
внутри /server
.
mkdir /server/appname # create directory from root level
2. Затем запустите команду startapp
, чтобы создать приложение.
django-admin.py startapp appname ./server/appname