5

我有一个Django 1.3项目,在settings.py中有这个选项

SITE_ROOT = os.path.dirname(os.path.realpath( __文件__ ))

STATIC_ROOT = os.path.join(SITE_ROOT, 'static')

MEDIA_ROOT = os.path.join(SITE_ROOT, 'media')

TEMPLATE_DIRS = ( os.path.join(SITE_ROOT, 'templates'), )

但在Django 1.4中,默认情况下settings.py被移动到名称等于项目名称的子目录中。因为那个staticmediatemplates目录现在必须移动到同一个子目录中?

这是我必须做的,还是只是更改 STATIC_ROOT、MEDIA_ROOT 和 TEMPLATE_DIRS 选项?

我知道这两种变体都可以,但是在 Django 1.4 中对此的最佳实践是什么?

而且我知道每个应用程序都可以拥有自己的模板和静态目录。

将所有其他应用程序目录放在同一个子目录中会更好吗?这不是使用 manage.py startapp 默认发生的情况

4

1 回答 1

7

好的,我遵循的方案是这样的:

myproject/requirements.txt- pip 可安装包

myproject/deployment- 部署东西,如服务器配置文件、固定装置(虚拟数据)等。

myproject/docs - 项目的文档

myproject/tests - 项目的测试

myproject/myproject - 项目的操作代码(和settings.py,urls.py)

展开 myproject/myproject文件夹:

myproject/myproject/app1 - 一个常规的应用程序(包括其特定的模板/静态文件)

myproject/myproject/app2 - 另一个常规应用程序(同上)

myproject/myproject/website- 按照惯例,半特殊应用程序。

这个website应用程序基本上包含 4 件事:

1)一个空的models.py(这样django会认为它是一个有效的应用程序)

2) aviews.py具有入口点index视图。也许其他一些不适合任何其他特定应用程序的视图。

3)具有适用于整个项目的management自定义django 命令的目录。

4)templates具有 404.html 和 505.html 的目录。它还有一个名为的子目录website,其中包括所有其他应用程序的通用/基本 html 模板extends,以及index.html.

5) 一个static 带有后续子目录的目录,名为css,jsmedia用于全局静态文件。

我猜没有什么异国情调。我认为大多数人都遵循类似的模式,但我想在这里指出任何效率低下的地方,如果有的话。

编辑: 关于生产 VS 开发的设置,我使用流行的 settings_local 模式,你可以在这里阅读并最终引导你到这里,它描述了一个更好的模式。

于 2012-05-29T14:35:20.603 回答