Django 1.4(MEDIA_ROOT,STATIC_ROOT,TEMPLATE_DIRS)

时间:2012-05-29 12:25:09

标签: django

我在 settings.py

中有这个选项的 Django 1.3 项目
  

SITE_ROOT = os.path.dirname(os.path.realpath( __ file __ ))

     

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 会移动到名称等于项目名称的子目录中。由于静态媒体模板目录现在必须在同一子目录中移动?

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

我知道两种变体都可以,但是在Django 1.4中最好的做法是什么?

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

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

发生的情况

1 个答案:

答案 0 :(得分: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)views.py带有入口点index视图。也许其他一些观点不适合任何其他特定应用。

3)management目录,其中包含适用于整个项目的自定义django commands

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

5)static目录,其中包含名为cssjsmedia的后续子目录,用于全局静态文件。

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

修改 关于我使用的生产VS开发的设置 流行的settings_local模式,你可以阅读here,最终会 引导你here,它描述了一个更好的模式。