同时重写和扩展 Django 管理模板
重写 Django 的管理模板是自定义管理界面的常见需求。但是,当您想要覆盖和扩展模板,同时还想利用 AppDirectories 模板加载器时,您可能会面临困境。
覆盖与扩展
在 Django 中,覆盖模板涉及完全替换现有模板文件,而扩展允许您将内容添加到模板内的特定块。
AppDirectories 模板加载器的挑战
The AppDirectories 模板加载器在覆盖和扩展管理模板时提出了挑战。使用此加载器时,Django 希望扩展模板与原始模板位于同一目录中。如果管理模板位于不同的应用程序中,这可能会出现问题。
现有解决方案
自定义模板加载器:
推荐的解决方案是使用支持跨应用程序目录扩展模板的自定义模板加载器。 DjangoSnippets.org 上提供了一个这样的加载器。
自定义 Django 的模板加载器:
另一个选项是自定义 Django 的 AppDirectories 模板加载器以允许从特定应用程序扩展模板。这涉及创建一个继承自 AppDirectories 加载器的自定义模板加载器类并修改其行为。
Django 的未来计划
在撰写本文时,Django 本身并不支持跨应用程序目录扩展模板。然而,GitHub 上有一个未解决的问题建议使用此功能。如果实现,它将显着简化覆盖和扩展 Django 管理模板的过程。
自定义加载器的用法示例:
使用上面提到的自定义模板加载器,您可以可以在您的模板中实现以下内容:
{% extends "admin:admin/index.html" %} {% block sidebar %} {{block.super}} <div> <h1>Extra links</h1> <a href="/admin/extra/">My extra link</a> </div> {% endblock %}
此代码使用附加侧边栏内容扩展了管理索引模板,有效地覆盖和扩展了原始模板。
以上是如何使用 AppDirectories 模板加载器覆盖和扩展 Django 管理模板?的详细内容。更多信息请关注PHP中文网其他相关文章!