首页  >  文章  >  后端开发  >  如何扩展和覆盖 Django 管理模板而不替换它们?

如何扩展和覆盖 Django 管理模板而不替换它们?

Patricia Arquette
Patricia Arquette原创
2024-11-13 00:00:02792浏览

How to Extend and Override Django Admin Templates Without Replacing Them?

使用重写模板加载器扩展和重写 Django 管理模板

扩展和重写 Django 管理模板而不替换它们是一个常见的挑战开发商的担忧。尽管之前对此主题进行了讨论,但对于使用 app_directories 模板加载器的项目来说,该问题仍然普遍存在。

一种解决方法涉及复制管理模板并从副本进行扩展,但这会增加复杂性和维护开销。为了简化此过程,我们开发了一个自定义模板加载器,使开发人员能够扩展特定应用程序中的任何模板。

实现覆盖模板加载器

扩展管理模板,例如 admin/index.html,开发者可以在应用程序的 templates 目录中创建自己的同名模板,并在模板的开头添加以下行:

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

内在此扩展模板中,开发人员可以定义块来覆盖基本模板的特定部分。例如,要向侧边栏添加额外的链接,他们可以创建以下块:

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

解决 Django 中的问题

截至最新和上一个版本Django 的 LTS 版本(3.2、2.2、1.11),使用 app_directories 模板加载器覆盖和扩展管理模板仍然是一个已记录的问题。然而,没有迹象表明这个问题是否会在 Django 的未来版本中得到解决。

以上是如何扩展和覆盖 Django 管理模板而不替换它们?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn