如何在Django中修改可重用应用程序的模板?

时间:2010-01-09 11:51:44

标签: django django-templates

例如,假设我要修改Django管理员中breadcrumbs模板的admin/change_list.html块。如果我试图像这样覆盖这个模板:

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

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

一个明显的方法是复制&粘贴整个源模板,但这正是我试图避免的。那么如何在不复制并将所有模板粘贴到我的项目中的情况下修改模板呢?

1 个答案:

答案 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_templatedelete_confirmation_templateobject_history_template执行相同的操作。在AdminSite上,您可以覆盖index_template }和login_template属性以相同的方式。)

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