Django Admin change_form.html模板全局覆盖失效问题求助
Django全局覆盖admin的change_form.html不生效问题
我想在Django的app1模块中全局覆盖admin/change_form.html,按照标准流程在app1/templates/admin路径下添加了同名模板文件,但自定义内容无法渲染。只有给每个Admin类手动指定change_form_template参数才能生效,但这不是我想要的实现方式。
我的模板代码(app1/templates/admin/change_form.html)
{% extends "admin/change_form.html" %} {% load i18n static %} {% block object-tools %} <h3>My extended html</h3> => Not rendered until => change_form_template = 'admin/change_form1.html' {{ block.super }} <script defer="defer" src="{% static 'app1/image_preview.js' %}"></script> {% endblock %}
admin.py代码
from django.contrib import admin from .models import Model1 class Model1Admin(admin.ModelAdmin): # change_form_template = 'admin/change_form1.html' # 手动指定此参数才生效,但不想用这种方式 pass admin.site.register(Model1, Model1Admin)
预期效果:<h3>My extended html</h3>应该显示在所有change_form.html页面中,因为模板已经继承了官方的admin/change_form.html,且app1已在settings.py的INSTALLED_APPS中注册。
完整操作步骤
- django-admin startproject pr1
- cd pr1
- django-admin startapp app1
- 修改settings.py,添加
INSTALLED_APPS += ['app1'] - 在app1/templates/admin目录下创建change_form.html并写入上述模板内容
- 执行迁移、创建超级用户,登录后访问
http://127.0.0.1:8000/admin/app1/model1/add/
补充说明
尝试过ChatGPT给出的方案但无效,也试过在项目根目录添加templates/admin路径,问题依旧。
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

