一尘不染

如何覆盖和扩展基本的Django管理模板?

django

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

首先-我知道这个问题已经被问过并回答过(请参阅Django:覆盖和扩展应用程序模板),但是正如答案所示,如果您使用的是app_directories模板加载器(大部分是时间)。

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

它可能会想到一些针对模板的自定义扩展标签,但是如果已经存在解决方案,我不想重新发明轮子。

附带说明一下:有人知道Django本身是否可以解决此问题?


阅读 319

收藏
2020-03-25

共1个答案

一尘不染

更新:

阅读适用于你的Django版本的文档。例如

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

2011年的原始答案:

大约一年半前,我遇到了同样的问题,并且在djangosnippets.org上找到了一个不错的模板加载器,可以轻松实现这一目的。它允许你在特定应用程序中扩展模板,从而使你能够创建自己的admin / index.html,从而从admin应用程序扩展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 %}
2020-03-25