【问题标题】:Override templates of external app in Django在 Django 中覆盖外部应用程序的模板
【发布时间】:2013-07-28 22:28:07
【问题描述】:

我想覆盖外部应用程序的模板(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 应用程序中获取渲染的模板,而不是我的自定义模板。有什么提示吗?

【问题讨论】:

    标签: django django-allauth


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 2011-04-27
        • 2018-05-22
        • 2013-06-05
        • 1970-01-01
        • 2011-07-21
        • 2017-11-24
        • 1970-01-01
        相关资源
        最近更新 更多