4

我是第一次尝试 Django,我正在尝试按照django 团队提供的教程进行操作。

在我创建了一个新项目后,我得到了以下文件夹/文件结构,正如教程所说的那样:

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

我想我可以手动将应用程序移动到项目文件夹,但这是我不应该做的事情。

所以,要么是教程中有问题(我很难相信),要么我在这里遗漏了一些东西(更有可能)。

提前致谢。

4

3 回答 3

7

这是新的正确布局。“mysite/mysite”是一个应用程序,“mysite/polls”是一个应用程序。“mysite”父文件夹是您的项目文件夹。

于 2013-02-27T21:43:24.883 回答
3

@holyredbeard 这是正确的布局你在阅读旧文档吗?

有用的阅读:http ://www.tdd-django-tutorial.com/blog/articles/2012/tutorials-updated-django-14-and-its-weird-new-fold/

不要移动 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
于 2013-02-27T21:45:04.163 回答
1

这是自 1.4 版本以来的官方布局。

发行说明中很好地解释了背后的基本原理: https ://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py

不要动manage.py。一般来说,你可以期望 Django 自己的脚本总是做正确的事情,你不需要移动任何文件来让它工作。

于 2013-02-27T21:52:29.743 回答