【问题标题】:How to modify a template of a reusable app in Django?如何在 Django 中修改可重用应用程序的模板?
【发布时间】:2011-01-03 05:51:06
【问题描述】:

例如,假设我想在 Django admin 中修改 admin/change_list.html 模板的 breadcrumbs 块。如果我尝试像这样覆盖此模板:

{% extends "admin/change_list.html" %}
{% block breadcrumbs %} ... my changes ... {% endblock %}

然后 Django 在尝试加载我的覆盖时进入无限递归,因为“扩展”标签试图加载覆盖而不是原始模板。

一个明显的方法是复制和粘贴整个源模板,但这正是我试图避免的事情。那么如何修改模板而不将其全部复制并粘贴到我的项目中呢?

【问题讨论】:

标签: django django-templates


【解决方案1】:

关于覆盖管理模板的完整详细信息在这里:http://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates

如果您只想更改单个应用的模板,您只需将其保存为app_label/change_list.html。如果您尝试为单个模型更改它,可以将其保存为app_label/model_as_underscores/change_list.html

如果您尝试为所有内容更改它,您可以创建一个具有不同名称的新模板,并将其名称设置为您所有 ModelAdmin 子类的 change_list_template 属性。 (在ModelAdmin 上,您可以对change_form_templatedelete_confirmation_templateobject_history_template 执行相同的操作。在AdminSite 上,您可以以相同的方式覆盖index_templatelogin_template 属性。)

这两种方法都允许您从原始管理模板进行扩展。

【讨论】:

  • 感谢您为我指明正确的方向。我想覆盖所有应用程序的阻止。在我的admin.py 末尾添加了admin.ModelAdmin.change_list_template = "admin/myproject_change_list.html" 并做到了。不完全“干净”,但肯定足够好。
猜你喜欢
  • 2016-08-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 2012-09-15
  • 2021-08-21
  • 2012-09-17
相关资源
最近更新 更多