例如,假设我要修改Django管理员中breadcrumbs
模板的admin/change_list.html
块。如果我试图像这样覆盖这个模板:
{% extends "admin/change_list.html" %}
{% block breadcrumbs %} ... my changes ... {% endblock %}
然后Django在尝试加载我的覆盖时进入无限递归,因为“extends”标签试图加载覆盖而不是原始模板。
一个明显的方法是复制&粘贴整个源模板,但这正是我试图避免的。那么如何在不复制并将所有模板粘贴到我的项目中的情况下修改模板呢?
答案 0 :(得分:3)
有关覆盖管理模板的完整详细信息,请访问: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
。
如果您尝试更改所有内容,可以使用其他名称创建新模板,并在所有change_list_template
子类上将其名称设置为ModelAdmin
属性。 (在ModelAdmin
上,您可以对change_form_template
,delete_confirmation_template
和object_history_template
执行相同的操作。在AdminSite
上,您可以覆盖index_template
}和login_template
属性以相同的方式。)
这两种方法都允许您从原始管理模板扩展。