2015-10-14 34 views
0

我們想要一個Django實例爲不同的域服務。它們之間的唯一區別是不同的模板,其餘的都是一樣的。所以我們試圖修改TEMPLATES.DIRSmiddleware。但是Django模板加載器會忽略中的所有更改,在settings.py加載後會生成TEMPLATES.DIRS如何使Django支持一個settings.py的多個域?

有或多或少的標準Django的方式來支持不同的TEMPLATES.DIRS對於只有一個settings.py不同的域?

+0

是否有任何理由爲什麼這個*有*爲單個實例,或者您可以將它部署兩次? – jpmc26

+0

這些域名/網站太接近了不同的settings.py。我們只需要爲它們使用不同的base.html(和更多的模板)。 – Jury

+0

開發時重複的代碼是可維護性問題。在* deploy *時重複*絕對好*。從鳥瞰的角度來看,這聽起來像你只需要兩個配置爲同一個應用程序。兩種不同配置的獨立安裝絕對是實現這一點的標準方式。你只需要一個流暢的(可能是主要是自動的)部署過程,並確保你同時更新它們。 – jpmc26

回答

0

要解決您的問題,請使用模板變量,extendinclude支持變量。只是省略quatation標記:

{% extends "base.html" %} 

成爲

{% extends string_variable_with_file_name %} 

,因爲你必須是變量設置爲在上下文正確的文件名。