2013-07-29 72 views
9

我想覆蓋外部應用程序的模板(allauth,安裝在網站包中)。不幸的是我沒有閱讀過的建議。 我增加了以下我settings.py覆蓋Django中外部應用程序的模板

PROJECT_ROOT = os.path.normpath(os.path.dirname(os.path.abspath(__file__))) 
TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, 'templates', 'allauth')) 

和複製的所有模板(this content)到my_project_dir/templates/allauth。但是,當我重新啓動服務器並重新加載頁面時,我只能從網站包中的原始allauth應用獲取呈現的模板,而不是我的自定義模板。任何提示?

回答

7

我傾向於搞清楚發生了什麼事情(與DEBUG設置爲True)的方式,是有一個視圖渲染根本不存在的模板,並期待在位置列表中的Django試圖加載從模板(這將包含在錯誤頁面輸出中)。

試圖渲染哪些模板?如果他們試圖呈現allauth/foo.html,那麼您需要將my_project_dir/templates添加到您的TEMPLATE_DIRS設置中,而不是my_project_dir/templates/allauth

27

檢查INSTALLED_APPS的順序,匹配的第一個模板將被渲染。

考慮到這一點,你可以在自定義應用程序的相同路徑下添加模板。