2012-07-22 46 views
3

因此,我和我的团队是Django开发的新手。过去几周,我们一直在努力设计我们的项目结构,并且我们已经做了大量的阅读,试图掌握最佳做法。如何最好地管理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世界中对这个问题没有确定的答案。但是,我们是否在正确的路线?我们有误解吗?

我们已经有了一对夫妇的想法是:

  1. 有专门到名为沿着“一般”或“通用”的东西线顶级模板和htdocs中的应用程序。
  2. 将“项目名称/模板”目录移动到我们的“静态”文件夹旁边的根级别。
  3. 要停止谈论这个问题,并采用上面提到的结构。

回答

1

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

这意味着,你将有一些那种你会被整个项目中重复使用基本模板和静态资源填充project.coreproject.baseproject.commons应用。

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

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

+0

谢谢@ filip-dupanovic。这为我们清除了它。我们正在使用'project.core'应用程序! :-D – m1ket 2012-07-22 14:03:46