11

我想覆盖外部应用程序的模板(allauth,安装在站点包中)。不幸的是,我读到的任何建议都没有奏效。我将以下内容添加到我的settings.py

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

并将所有模板(此内容)复制到my_project_dir/templates/allauth. 但是当我重新启动服务器并重新加载页面时,我只能从站点包中的原始 allauth 应用程序中获取渲染的模板,而不是我的自定义模板。有什么提示吗?

4

2 回答 2

35

检查INSTALLED_APPS顺序,第一个匹配的模板将被渲染。

考虑到这一点,您只需在自定义应用程序的同一路径下添加模板。

于 2015-06-29T02:39:59.070 回答
9

我倾向于弄清楚发生了什么(DEBUG设置为True)的方式是让视图渲染一个不存在的模板,并查看 Django 尝试从中加载模板的位置列表(将包含在错误页面输出)。

视图试图呈现哪些模板?如果他们正在尝试渲染allauth/foo.html,那么您需要添加my_project_dir/templates到您的TEMPLATE_DIRS设置中,而不是my_project_dir/templates/allauth.

于 2013-07-29T08:14:59.510 回答