startapp com manage.py para criar uma aplicação noutro directório
a estrutura do meu projecto é:
/proj
/frontend
/server
/proj
/app1
/app2
manage.py
Como executar python manage.py startapp app_name
para que as minhas aplicações recém-criadas estejam dentro do directório /server
? Eu tentei executar django-admin.py startapp appname
dentro do directório server
para criar o aplicativo, mas eu iria acabar com este erro:
$ ./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.
4 answers
Você pode indicar a localização da pasta /server/appname
Depois de appname
como a destination
ou seja, onde será criada a estrutura do Directório da aplicação Django.
startapp <app_label> [destination] # startapp command usage
Cria uma estrutura de directório da aplicação Django para o nome da aplicação indicada no pasta actual ou o destino indicado.
Se apenas for indicado o nome da aplicação, o directório da aplicação será criado em a pasta de trabalho actual.
Se for fornecido o destino opcional, a Django utilizará o directório em vez de criar um novo
Assim, poderá indicar a localização da sua pasta /server/appname
como o valor destination
.
django-admin.py startapp appname [destination] # specify destination
O que precisas de fazer?
1. primeiro tem de criar uma pasta appname
dentro de /server
.
mkdir /server/appname # create directory from root level
2. então, execute o comando startapp
para criar a aplicação.
django-admin.py startapp appname ./server/appname
A maneira mais simples que encontrei é entrar na pasta server
e criar um ficheiro __init__.py
:
touch __init__.py
Então, crie qualquer aplicação que queira:
django-admin startapp {{APP NAME}}
Se já estiver no directório server
, então poderá executar
python ../manage.py startapp appname
E appname
serão criados no directório server
em vez de na raiz do projecto.
Eu tenho sempre a minha aplicação numa pasta interna (a mesma que o Django cria, com o nome do projecto), seguindo o desenho de duas colheres de Django que é semelhante ao que você quer fazer. Quando você quiser criar um novo aplicativo, você pode usar, como a resposta anterior diz,
python ../manage.py startapp my_new_app
De dentro da pasta na qual deseja criar a aplicação. Outra coisa, ainda mais fácil é o que eu faço, é que você pode correr
django-admin startapp my_new_app
A partir desta pasta Interior, de aplicações e irá trabalhar.