如何覆盖管理模板(例如 admin/index.html),同时扩展它(请参阅https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing-an-admin-template https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing-an-admin-template)?
首先 - 我知道这个问题之前已经被问过并回答过(参见Django:覆盖并扩展应用程序模板 https://stackoverflow.com/questions/3967801/django-overriding-and-extending-an-app-template)但正如答案所说,如果您使用 app_directories 模板加载器(大多数情况下),它并不直接适用。
我当前的解决方法是制作副本并从中扩展,而不是直接从管理模板扩展。这很有效,但确实很混乱,并且在管理模板更改时会增加额外的工作。
它可以为模板考虑一些自定义扩展标签,但如果已经存在解决方案,我不想重新发明轮子。
旁注:有人知道 Django 本身是否会解决这个问题吗?
Update:
阅读您的 Django 版本的文档,例如这最新版本 https://docs.djangoproject.com/en/stable/ref/contrib/admin/#admin-overriding-templates或旧的 LTS 版本:3.2 https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#admin-overriding-templates, 2.2 https://docs.djangoproject.com/en/2.2/ref/contrib/admin/#admin-overriding-templates, 1.11 https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#admin-overriding-templates
2011年的原始答案:
大约一年半前我遇到了同样的问题,我发现了一个不错的djangosnippets.org 上的模板加载器 http://djangosnippets.org/snippets/1376/这使得这很容易。它允许您在特定应用程序中扩展模板,使您能够创建自己的模板管理/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 %}
我已经给出了一个关于如何在中使用此模板加载器的完整示例博客文章 http://heyman.info/2011/jul/5/extending-templates-specific-django-app/在我的网站上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)