2012-07-22 68 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