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

Eri*_*ler 13 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 %}
Run Code Online (Sandbox Code Playgroud)

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

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

从我的理解,这是一个扩展而不是覆盖django模板的最佳实践,所以我想让它工作.但是,如果我能做到的唯一方法是覆盖它,那么这就是我要采取的路线.

ppe*_*rid 20

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

为了达到你想要的效果,你应该覆盖 admin/base_site.html(它反过来扩展了 base.html).这样你就可以只替换你感兴趣的块.