django为我们提供了一个很好的后台管理界面。这个后台管理界面提供了很完善的增删改查的功能,自定义显示的列,自定义编辑的列,自定义过滤条件等。
但是如果想在原有的后台管理界面推展一些功能,我们就要修改这个后台管理界面。在后台管理的官方文档有介绍一个叫Custom template options的章节介绍,里面介绍了自定义后台模板的两种方式:
1、替换原有模板,过程是:先从django的django/contrib/admin/templates/admin目录下面将要替换的模板文件拷贝出来,比如我们要替换列表页,那就将django/contrib/admin/templates/admin/change_list.html拷贝出来,放到自己的app模板目录下,在自定义地修改成自己想要的功能,然后在ModelAdmin中修改change_list_template的值为新的模板路径:
class SubjectAdmin(admin.ModelAdmin):
change_list_template = "tbl/sbj_change_list.html";#app名称是tbl
list_display = ('subject_no','title','accepted','submissions');
list_filter = ('subject_no','title');
search_fields = ('title',);
raw_id_fields = ('auther',);
date_hierarchy = 'create_time';
ordering = ['subject_no','accepted','submissions'];
2、使用继承的方式:和上面的步骤类似,但是新的模板不是拷贝出来的,而是直接继承原有的django的模板:
#tbl/sbj_change_list.html
{% extends "admin/change_list.html" %}
{% load i18n admin_urls %}
{% block object-tools-items %}
<li>
{% url cl.opts|admin_urlname:'add' as add_url %}
<a href="{% add_preserved_filters add_url is_popup to_field %}" class="addlink">
{% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
</a>
</li>
<li>
<a href="https://www.baidu.com/">爬数据</a>
</li>
{% endblock %}
然后和方法一一样修改ModelAdmin的change_list_template值。
运行,看到我们的后台列表页面多了一个按钮: