我第一次尝试使用Django,我正在尝试跟随django团队提供的the tutorial。
在我创建了一个新项目之后,我获得了以下文件夹/文件结构,就像教程说我应该:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
当我创建应用程序时,我运行:
python manage.py startapp polls
...在manage.py文件所在的文件夹中创建应用程序'polls' - 这给了我:
mysite/
manage.py
polls/
__init__.py
admin.py
models.py
tests.py
views.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这意味着我创建的应用程序是在我的项目文件夹之外创建的,当然不应该是这种情况。我试图将manage.py移到项目文件夹中。但是,当我这样做并运行时:
python manage.py syncdb
...我收到以下错误:
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'testproject.settings' (Is it on sys.path?): No module named testproject.settings
我想我可以手动将应用程序移动到项目文件夹,但这是我不应该做的。
所以,教程中的某些内容是错误的(我很难相信),或者我在这里遗漏了一些东西(更有可能)。
提前致谢。
答案 0 :(得分:7)
这是新的正确布局。 “mysite / mysite”是一个应用程序,“mysite / polls”是一个应用程序。 “mysite”父文件夹是您的项目文件夹。
答案 1 :(得分:3)
@holyredbeard这是正确的布局你在阅读旧文档吗?
不要移动应该位于应用程序和项目文件夹之外的manage.py。
自1.4常见布局示例...
project_root/
project_name/
media/
static/
static_root/ (in production)
templates/some_app/foo.html (overriding some_app at project level)
/admin/some_app/some_model/change_list.html
(overriding admin changelist for some_app.models.some_model)
settings.py
settings_deployment.py
urls.py
some_app/
templates/some_app/foo.html
urls.py
views.py
models.py
manage.py
答案 2 :(得分:1)
这是自版本1.4以来的官方布局。
发布说明中详细解释了背后的基本原理: https://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py
不要移动manage.py
。一般来说,你可以期待Django自己的脚本总是做正确的事情,你永远不需要移动任何文件只是为了让它工作。