如何正确扩展django admin / base.html模板?

时间:2013-07-31 18:37:56

标签: django django-templates django-admin

这似乎应该很简单但我必须做错事。我之前已经为各个应用程序扩展了管理模板,但这是我第一次尝试扩展以全面修改内容。

我想在整个管理员中更改帮助文本的颜色,因此我想扩展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模板是一种最佳实践,所以我希望能够实现这一点。但是,如果我能做到的唯一方法是覆盖它,那么这就是我要采取的路线。

1 个答案:

答案 0 :(得分:19)

实际上,你的问题是无限递归循环,因为base.html扩展了自己。

要实现您的目标,您应该覆盖 admin / base_site.html(而 extends base.html)。这样你就可以只替换你感兴趣的块。