如何覆盖管理模板(例如admin/index.html),同时扩展它(参见https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing-an-admin-template)?

首先——我知道这个问题以前有人问过,也有人回答过(见Django: Overriding AND extending an app template),但答案是,如果你使用的是app_目录模板加载器(大多数情况下都是这样),它并不直接适用.

我目前的解决办法是制作副本并从中扩展,而不是直接从管理模板扩展.这很有效,但它确实令人困惑,并且在管理模板更改时增加了额外的工作.

它可以为模板想出一些定制的扩展标签,但如果已经存在解决方案,我不想重新发明轮子.

另一方面:有人知道Django本身是否会解决这个问题吗?

推荐答案

Update:

阅读Django版本的文档.例如

https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#admin-overriding-templateshttps://docs.djangoproject.com/en/2.0/ref/contrib/admin/#admin-overriding-templates https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#admin-overriding-templates

2011年的原始答案:

大约一年半前我遇到过同样的问题,我找到了一个很好的template loader on djangosnippets.org,这让这件事变得很容易.它允许您在特定应用程序中扩展模板,使您能够创建自己的admin/index.html来扩展管理应用程序中的admin/index.html模板.如下所示:

{% extends "admin:admin/index.html" %}

{% block sidebar %}
    {{block.super}}
    <div>
        <h1>Extra links</h1>
        <a href="/admin/extra/">My extra link</a>
    </div>
{% endblock %}

我已经在我的网站上给出了一个关于如何在blog post中使用这个模板加载器的完整示例.

Django相关问答推荐

Django逆转ForeignKey返回无

我无法在Django模板中使用Get_Foo_Display

django优化查询

在生成的表单元素处出现多值DictKeyError

来自日历的 Django 动态 url

Django 应用程序似乎无法识别相关名称?

所有子元素的Django自递归外键过滤器查询

文档中的 Mongoengine creation_time 属性

Django 模型将外键设置为另一个模型的字段

将网络测功机添加到 Heroku django 应用程序时如何克服Coudn't find that formation错误?

在 Django 管理屏幕中删除添加另一个

Django:如何从模板调用视图函数?

magic有什么问题?

Django -- User.DoesNotExist 不存在?

Django查询在哪里

测试 Django 信号的正确方法

如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?

Django unique_together 与可为空的 ForeignKey

django 应用基于条件的样式类

判断列表 django 模板中是否存在