如何最好地管理Django模板&静态内容?

时间:2012-07-22 12:34:34

标签: django templates static

所以,我和我的团队是Django开发的新手。在过去的几周里,我们一直在努力设计我们的项目结构,并且我们已经做了很多阅读,试图掌握这样做的最佳实践。

但是,我们仍然在努力寻找存储我们对所有应用程序通用的模板/静态文件的最佳方式。

让我详细说明我们迄今为止实施的结构:

root-folder/
    app-1/
        static/
            app-1/
                css/
                js/
                img/
        templates/
            base.html
            base-app-1.html **extends base.html
    app-2/
        static/
            app-2/
                css
                js
                img
        templates/
            base.html **extends base.html at 'project-name' level
            base-app-2.html **extends base.html
    project-name/
        collectstatic/
        templates/
            base.html
    static/
        base/
            css
            js
            img

这个结构让我感到困惑的一件事是我们的顶级模板位于'project-name'级别。我想看到这个文件夹与我们的根级静态文件夹处于同一级别。

但是,我不想将根级静态文件夹内容移动到'project-name / collectstatic',因为我不希望该文件夹中的文件受版本控制。

我们意识到Django世界中没有明确的答案。但是,我们是否在正确的路线上?我们误解了什么吗?

我们得到的一些想法是:

  1. 要有一个专门用于顶级模板和htdocs的应用程序称为“通用”或“通用”的行。
  2. 将'project-name / templates'目录移动到我们的'static'文件夹旁边的根级别。
  3. 停止谈论这个问题,并采用上面提出的结构。

1 个答案:

答案 0 :(得分:1)

在Django中,最好依靠staticfiles'AppDirectoriesFinder finder和模板的'app_directories.Loader`加载程序类来管理你的静态文件和模板。

这意味着您将拥有某种project.coreproject.baseproject.commons应用程序,您将使用在整个项目中重复使用的基本模板和静态资源填充。< / p>

我假设您在project-name/collectstatic/文件夹中的问题是它是在您受版本控制的路径上定义的STATIC_ROOT。理想情况下,您可以将静态和媒体根移到项目的源之外。最简单的解决方案是将其移动到项目的顶级包旁边,在用于分发Python包的标准项目布局中,或者移动到Web服务器的预配置文档根目录。

无论哪种方式,这都应该将您本地生成的静态资源移到项目的Python包之外。