2013-07-29 48 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的顺序,匹配的第一个模板将被渲染。

考虑到这一点,你可以在自定义应用程序的相同路径下添加模板。