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

如何最好地管理Django模板&;静态内容?,django,templates,static,Django,Templates,Static,所以,我和我的团队是Django开发的新手。在过去的几周里,我们一直在尝试设计我们的项目结构,并且我们已经做了大量的阅读,试图掌握这样做的最佳实践 然而,我们仍在努力寻找存储所有应用程序通用的模板/静态文件的最佳方法 让我详细说明我们迄今为止实施的结构: root-folder/ app-1/ static/ app-1/ css/ js/ img/

所以,我和我的团队是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/collectstatic”中,因为我不希望该文件夹中的文件受到版本控制

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

我们有几个想法:

  • 有一个专门用于顶级模板和htdocs的应用程序,称之为“通用”或“通用”
  • 将“project name/templates”dir沿着“static”文件夹移动到根级别
  • 停止谈论这个问题,按照上面的结构去做

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

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

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


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

    谢谢@filip dupanovic。这为我们澄清了一切。我们正在进行一个
    项目。核心
    应用程序!:-D