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

标签 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 模板是最佳实践,所以我想让它工作。但是,如果我能做到的唯一方法是覆盖它,那么这就是我要走的路线。

最佳答案

实际上,您的问题是随着 base.html 扩展自身的无限递归循环。

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

关于django - 如何正确扩展 django admin/base.html 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978260/

相关文章:

python - 为什么 Django Admin 模型页面在成功迁移后引发 FieldDoesNotExist 异常?

django - 为什么 Django 会抛出系统错误?

python - 使用 Django Rest Framework 中的 ModelSerializer 和 ModelViewSet 返回通过 POST 创建的新项目的 id

django - 在 Django 中从 direct_to_template 移动到新的 TemplateView

python - Pydev autogen DJANGO_SETTINGS_MODULE 环境变量?

django - 我在哪里放置 Django 身份验证后端文件?

python - Django 分页未给出结果

Django 文件字段 : How to return filename only (in template)

javascript - 使用 Django 模板(列表和字典)将 Python 数据结构转换为 js 数据结构

django - 如果所有字段都是只读的,则在管理员中隐藏保存按钮