使用manage.py启动app以在另一个目录中创建应用程序

Lio*_*cer 24 python django

我的Django项目结构是:

/proj
  /frontend
  /server
    /proj
    /app1
    /app2
  manage.py
Run Code Online (Sandbox Code Playgroud)

如何运行python manage.py startapp app_name以便我新创建的应用程序在/server目录中?我尝试django-admin.py startapp appnameserver目录中运行来创建应用程序,但我最终会遇到此错误:

$ ./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.
Run Code Online (Sandbox Code Playgroud)

Rah*_*pta 48

您可以指定路径/server/appname后的目录appnamedestination在Django应用程序的目录结构将被创建,即.

来自startapp文档:

startapp <app_label> [destination] # startapp command usage 
Run Code Online (Sandbox Code Playgroud)

为当前目录或给定目标中的给定应用程序名称创建Django应用程序目录结构.

如果仅给出应用程序名称,则将在当前工作目录中创建应用程序目录.

如果提供了可选目标,Django将使用该现有目录而不是创建新目录

因此,您可以将/server/appname目录的路径指定为destination值.

django-admin.py startapp appname [destination] # specify destination
Run Code Online (Sandbox Code Playgroud)

你需要做什么?

1.您需要先appname在里面创建一个目录/server.

mkdir /server/appname # create directory from root level
Run Code Online (Sandbox Code Playgroud)

2. 然后,运行startapp命令以创建应用程序.

django-admin.py startapp appname ./server/appname
Run Code Online (Sandbox Code Playgroud)


小智 12

我总是将我的应用程序放在一个内部文件夹中(与 Django 创建的文件夹相同,带有项目名称),遵循与您想要做的类似的两个 Django的设计。当你想创建一个新的应用程序时,你可以使用,正如之前的答案所说,

python ../manage.py startapp my_new_app
Run Code Online (Sandbox Code Playgroud)

从您要在其中创建应用程序的文件夹中。另一件事,更容易的是我所做的,是你可以跑

django-admin startapp my_new_app
Run Code Online (Sandbox Code Playgroud)

从这个内部文件夹,应用程序,它会工作。


mic*_*ard 5

如果您已经在server目录中,那么您可以运行

python ../manage.py startapp appname
Run Code Online (Sandbox Code Playgroud)

并且appname将在server目录中创建,而不是在项目根目录中。


Cha*_*rma 5

在 Django 项目中创建新应用程序。

第一的:

  • 使用终端转到您要在其中创建应用程序的文件夹

第二:

  • 在终端中输入以下命令,
django-admin startapp <new_app_name>
Run Code Online (Sandbox Code Playgroud)

现在,您可以检查使用给定名称创建的新应用程序。