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.
Author: Liondancer, 2015-10-20

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 docs:

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
 27
Author: Rahul Gupta, 2015-10-20 18:48:42

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}}
 1
Author: thierno, 2018-07-03 08:45:18

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.

 0
Author: michael_j_ward, 2018-05-10 19:10:03

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.

 0
Author: Cristian Javier Azulay, 2018-09-24 05:29:45