Django自定义Admin新增视图如何保持与原生后台样式一致
问题原因
自定义Admin视图页面缺失侧边栏、用户操作栏,核心原因是直接调用render时只传入了自定义的title变量,没有注入Django Admin模板渲染必需的全局上下文变量:
- 顶部
View site/Log out操作栏依赖用户权限、站点地址等上下文 - 左侧导航侧边栏依赖
get_app_list生成的应用菜单数据
这些变量都封装在AdminSite的each_context方法中,手动构造上下文时没有合并这些内容,就会导致部分布局渲染失败,和是否继承base_site.html没有直接关系。
修复步骤
1. 修改自定义视图,注入Admin全局上下文
调整MyAdminSite的modif方法,通过self.each_context(request)获取Admin全局上下文,和你的自定义上下文合并后再传入模板:
def modif(self, request): context = { **self.each_context(request), 'title':"Documentation", # 追加你的业务自定义上下文变量即可 } return render(request, "documentation/scripts_modification.html", context)
2. 规范自定义模板的块写法
确保你的documentation/scripts_modification.html模板正确继承admin/base_site.html,并将页面主体内容放在content块内,参考写法:
{% extends "admin/base_site.html" %} <!-- 可选:自定义面包屑导航,和原生Admin风格保持一致 --> {% block breadcrumbs %} <div class="breadcrumbs"> <a href="{% url 'admin:index' %}">Home</a> › Documentation › Scripts modification </div> {% endblock %} {% block content %} <!-- 这里编写你的文档模块页面内容即可 --> <div class="module"> <h2>Scripts modification</h2> <p>文档内容区域</p> </div> {% endblock %}
修改完成后,自定义页面就会和原生Admin页面拥有完全一致的布局、样式,包含完整的顶部操作栏、侧边导航、底部版权信息等所有元素。
内容的提问来源于stack exchange,提问作者Balizok
相关产品推荐
相关产品推荐

