在Django中覆盖外部应用程序的模板

时间:2013-07-29 08:02:46

标签: django django-allauth

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

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应用程序获取渲染的模板,而不是我的自定义模板。任何提示?

2 个答案:

答案 0 :(得分:30)

检查INSTALLED_APPS订单,将呈现匹配的第一个模板。

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

答案 1 :(得分:9)

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

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