使用重写模板加载器扩展和重写 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中文网其他相关文章!