我的Django
项目结构是:
/proj
/frontend
/server
/proj
/app1
/app2
manage.py
如何运行python manage.py startapp app_name
,以便新创建的应用程序位于/server
目录中?我尝试在server
目录中运行django-admin.py startapp appname
来创建应用程序,但最终出现以下错误:
./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.
7条答案
按热度按时间pgky5nke1#
您可以指定
appname
之后./server/appname
目录的路径作为destination
,即Django应用目录结构将被创建的位置。来自
startapp
文档:在当前目录或给定的目标中为给定的应用名称创建Django应用目录结构。
如果只给出了应用程序名称,则会在当前工作目录中创建应用程序目录。
如果提供了可选的目的地,Django将使用现有的目录,而不是创建一个新的目录
因此,您可以将
./server/appname
目录的路径指定为destination
值。你需要做什么
**1.**首先需要在
/server
中创建一个目录appname
。**2.**然后,运行
startapp
命令创建应用程序。bxgwgixi2#
我总是把我的应用程序放在一个内部文件夹中(和Django创建的文件夹一样,有项目的名字),遵循Two Scoops of Django的设计,这和你想做的很相似。当你想创建一个新的应用程序时,你可以使用,就像前面的答案说的那样,
从您要创建应用程序的文件夹中。另一件事,更简单的是我所做的,是您可以运行
从这个内部文件夹,应用程序,它会工作。
n6lpvg4x3#
如果您已经在
server
目录中,则可以运行并且
appname
将在server
目录中创建,而不是在项目根目录中创建。kzipqqlq4#
在Django项目中创建一个新应用程序。
现在,您可以检查,使用给定名称创建的新应用程序。
v440hwme5#
我发现最简单的方法是进入
server
文件夹并创建一个__init__.py
文件:然后,创建您想要的任何应用:
vnjpjtjt6#
如果您使用 * cookiectter-django * 启动项目,那么下面的链接给出了步骤。
与可接受的答案和我在这里看到的其他答案的区别在于,您需要在 apps.py 中更改应用程序的名称,这是一个额外的步骤。
要复制粘贴到此处:
1.使用
python manage.py startapp
创建应用程序1.移动 目录到<project_slug>目录
1.编辑 <project_slug>//www.example.com apps.py 并将名称=““更改为名称=““<project_slug>。
1.在 <project_slug>文件 *config/settings/ www.example.com * 的 LOCAL_APPS 中添加“.. apps.“base.py
这里<project_slug>是您的“服务器”目录。
balp4ylt7#
对管理文件使用绝对路径。这对我来说效果很好,下面是一个从目标文件夹运行的示例: