You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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>
&rsaquo; Documentation
&rsaquo; Scripts modification
</div>
{% endblock %}

{% block content %}
<!-- 这里编写你的文档模块页面内容即可 -->
<div class="module">
    <h2>Scripts modification</h2>
    <p>文档内容区域</p>
</div>
{% endblock %}

修改完成后,自定义页面就会和原生Admin页面拥有完全一致的布局、样式,包含完整的顶部操作栏、侧边导航、底部版权信息等所有元素。


内容的提问来源于stack exchange,提问作者Balizok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:09:45