Python 使用manage.py启动Tapp以在另一个目录中创建应用程序
我的Python 使用manage.py启动Tapp以在另一个目录中创建应用程序,python,django,Python,Django,我的Django项目结构是: /proj /frontend /server /proj /app1 /app2 manage.py 如何运行python manage.py startapp_name,以便新创建的应用程序位于/server目录中?我尝试在server目录中运行django-admin.py startapp appname来创建应用程序,但最终会出现以下错误: $ ./manage.py runserver Traceback (most
Django
项目结构是:
/proj
/frontend
/server
/proj
/app1
/app2
manage.py
如何运行python manage.py startapp_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.
$./manage.py运行服务器
回溯(最近一次呼叫最后一次):
文件“/manage.py”,第10行,在
从命令行(sys.argv)执行命令
文件“/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site packages/Django/core/management/__init_u.py”,第351行,从命令行执行
utility.execute()
文件“/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site packages/Django/core/management/____________.py”,第343行,在execute中
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site packages/Django/core/management/__init_u.py”,第177行,在fetch_命令中
commands=get_commands()
文件“/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site packages/Django/utils/lru_cache.py”,第101行,在包装器中
结果=用户函数(*args,**kwds)
文件“/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/Django/core/management/__-init___;.py”,第72行,在get_命令中
对于反向中的应用程序配置(列表(apps.get\u app\u configs()):
文件“/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site packages/Django/apps/registry.py”,第137行,在get\u app\u configs中
self.check_apps_ready()
文件“/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site packages/Django/apps/registry.py”,第124行,在check\u apps\u ready中
raise AppRegistryNotReady(“应用程序尚未加载。”)
django.core.exceptions.AppRegistryNotReady:尚未加载应用程序。
您可以在appname
之后指定/server/appname
目录的路径作为目的地,即创建Django应用程序目录结构的位置
从
你需要做什么?
1。您需要首先在/server
内创建一个目录appname
mkdir /server/appname # create directory from root level
2。然后,运行startapp
命令创建应用程序
django-admin.py startapp appname ./server/appname
我找到的最简单的方法是进入服务器
文件夹并创建一个\uuuu init\uuuuu.py
文件:
touch __init__.py
然后,创建您想要的任何应用程序:
django-admin startapp {{APP NAME}}
如果您已经在服务器
目录中,则可以运行
python ../manage.py startapp appname
django-admin startapp my_new_app
而appname
将在server
目录中创建,而不是在项目根目录中创建。我总是将我的应用程序放在一个内部文件夹中(与Django创建的文件夹相同,带有项目名称),遵循类似于您想要做的设计。当你想创建一个新的应用程序时,你可以使用,正如前面的答案所说
python ../manage.py startapp my_new_app
从要在其中创建应用程序的文件夹中。另一件事,更简单的是我所做的,就是你可以跑步
python ../manage.py startapp appname
django-admin startapp my_new_app
从这个内部文件夹中,选择应用程序,它将工作
在Django项目中创建新应用程序
第一名:
- 使用终端转到您的文件夹,您要在其中创建应用程序
秒:
- 在终端中键入以下命令
django管理员startapp
现在,您可以检查使用给定名称创建的新应用程序。使用绝对路径管理文件对我来说很好,这是从目标文件夹运行的示例
python /home/user/project_name/manage.py startupapp app_name
如果您是使用cookiecutter django启动项目的,那么下面的链接中给出了步骤
与我在这里看到的已接受答案和其他答案不同的是,作为额外的步骤,您需要在apps.py中更改应用程序的名称
要复制并粘贴到此处:
1 - create the <name-of-the-app> app with python manage.py startapp
2 - move <name-of-the-app> directory to <project_slug> directory
3 - edit <project_slug>/<name-of-the-app>/apps.py and
change name = "<name-of-the-app>" to name = "<project_slug>.<name-of-the-app>"
4 - add "<project_slug>.<name-of-the-app>.apps.<NameOfTheAppConfigClass>", on your LOCAL_APPS on config/settings/base.py
1-使用python manage.py startapp创建应用程序
2-将目录移动到目录
3-编辑//apps.py和
将name=“”更改为name=“”
4-在config/settings/base.py上的本地应用程序上添加“.apps.”
这将是您的“服务器”目录。这是因为您在一个目录中创建应用程序,其中已经有一个目录,或者只是存在由startapp
@Ivan生成的同名文件。这是否意味着每次我都必须删除这些文件?嗯,是的。如果您已经在该目录中有一个应用程序,那么覆盖将实现什么效果?在一个空目录中创建它,或者,如果出于某种原因您想覆盖它们,只需在其他地方创建它们并进行复制。@li另外,您需要先在/server
中创建一个appname
目录,然后运行startapp
命令。检查编辑。@Ivan这里是项目结构:如果我想在服务器中创建我的应用程序,但是由于\uuu init\uuuuuuuuuuuupy
已经在服务器中,所以出现了错误<代码>app1
和app2
尚未创建。这就是我想要实现的。但是我得到的文件存在错误这比上面的解决方案容易得多。
1 - create the <name-of-the-app> app with python manage.py startapp
2 - move <name-of-the-app> directory to <project_slug> directory
3 - edit <project_slug>/<name-of-the-app>/apps.py and
change name = "<name-of-the-app>" to name = "<project_slug>.<name-of-the-app>"
4 - add "<project_slug>.<name-of-the-app>.apps.<NameOfTheAppConfigClass>", on your LOCAL_APPS on config/settings/base.py