【问题标题】:How do I correctly extend the django admin/base.html template?如何正确扩展 django admin/base.html 模板?
【发布时间】:2013-08-01 10:38:54
【问题描述】:

这看起来应该很简单,但我一定做错了什么。我之前为单个应用扩展了管理模板,但这是我第一次尝试扩展以全面修改某些内容。

我想改变整个管理员帮助文本的颜色,所以我想扩展 base.html 模板的 extrastyle 块。

所以在我的主模板文件夹中,我创建了 admin/base.html,其中包含以下代码:

{% extends 'admin/base.html' %}

{% block extrastyle %}
    {# Changing the color of the help text across the entire admin #}
    <style>
        .help, p.help {
            font-size: 10px !important;
            color: #f00;
        }
    </style>
{% endblock %}

现在,当我尝试访问管理员时,服务器完全崩溃并出现“总线 10”错误。我相信这是因为它试图扩展自己。由于 Django 首先在我的应用模板文件夹中查找,因此 {% extend 'admin/base.html' %} 会首先发现自己,然后世界就爆炸了。

但是,如果我尝试将基本 html 放在其他任何地方,它就不起作用。如果我把它放在我的一个应用程序中,它只适用于那个应用程序,但如果我把它放在其他任何地方,它就会被忽略。

据我了解,最好的做法是扩展而不是覆盖 django 模板,所以我想让它工作。但是,如果我能做到的唯一方法是覆盖它,那么这就是我要采取的路线。

【问题讨论】:

    标签: django django-templates django-admin


    【解决方案1】:

    确实,您的问题是无限递归循环,因为 base.html 扩展了自身。

    要实现你想要的,你应该覆盖 admin/base_site.html(反过来扩展 base.html)。这样你就可以只替换你感兴趣的块。

    【讨论】:

    • 啊,这就是我要找的。谢谢!
    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2021-05-12
    • 2016-06-11
    • 2016-12-17
    • 2012-09-27
    相关资源
    最近更新 更多