Django-管理站点重写admin模板

使用Django的admin管理工具,可以快速的构建自己的管理平台,使用Django原生太的模板更能使我们节省很多工作量。但有时候,模板上展现的内容并不能满足我们的业务需求,我们需要些许调整就可以达到我们想要的效果,此时我们可以通过重写admin模板来实现。

Django 模板

视图 基本模板名
更改列表 admin/change_list.html
增加/编辑表单 admin/change_form.html
删除确认 admin/delete_confirmation.html
对象历史 admin/object_history.html

重写模板

  • 首先在我们的项目根目录下建立一个子templates目录 。
  • 其次在templates目录下建立一个admin子目录。
  • 然后在admin目录下建立一个应用同名子目录(需要小写),如我们的应用testcmd。
  • 在应用目录下以模型层的名字建立一个子目录(需要小写,model的名字必须要小写,否则部署的时候会有问题,大坑),如在testcmd目录下创建topic目录。
  • 我们从django/contrib/admin/templates/admin目录下拷贝change_form.html文件到我们新建立的admin目录下。添加测试代码看看是否生效

    1
    2
    3
    4
    <form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
    <div>
    <label>==========test===========</label>
    {% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1">{% endif %}
  • 效果如图

总结

  • 目录结构(templates/admin/testcmd/topic/change_form.html)以上是针对app为testcmd,model 为 topic 的修改,并不会影响到其他模型
  • 目录结构(templates/admin/testcmd/change_form.html)会影响整个testcmd
  • 目录结构(templates/admin/change_form.html)会影响整个admin