3

所以,我和我的团队是 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

这种结构让我感到困扰的一件事是我们的顶级模板位于“项目名称”级别。我希望看到这个文件夹与我们的根级静态文件夹处于同一级别。

但是,我不想将根级静态文件夹内容移动到“项目名称/收集静态”中,因为我不想让该文件夹中的文件受到版本控制。

我们意识到,在 Django 世界中,这个问题没有明确的答案。但是,我们在正确的路线上吗?我们是不是误会了什么?

我们有几个想法是:

  1. 拥有一个专用于顶级模板和 htdocs 的应用程序,称为“通用”或“通用”。
  2. 将“项目名称/模板”目录移动到我们的“静态”文件夹旁边的根级别。
  3. 停止谈论这个问题并使用上面绘制的结构。
4

1 回答 1

1

在 Django 中,最好依靠静态文件的AppDirectoriesFinder查找器和模板的“app_directories.Loader”加载器类来管理静态文件和模板。

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

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

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

于 2012-07-22T13:49:11.420 回答