如意 Django CRM Admin UI 设计复盘:固定框架、任务导航与石绿松风
OKOK大家好欢迎大家来到大鹏 AI 教育我是张大鹏。一个模型越来越多的 Django Admin最先失控的通常不是功能而是页面秩序。顶部跟着页面离开视口左侧菜单长到需要单独滚动内容区又没有真正使用剩余宽度。当颜色散落在模板和组件中以后选中态、按钮、文字和滚动条还会逐渐长成几套风格。如意 Django CRM 的改造目标很明确让后台成为一个位置稳定、任务清楚、适合长时间工作的内部平台控制台。现在落地的结果是固定顶部、固定侧栏、内容区独立滚动以及统一的“石绿松风”主题系统。一、先让后台拥有稳定的工作位置后台不是一张固定比例的海报。它必须铺满浏览器可用视口并在表格、表单和审计记录不断增长时保持全局操作的位置稳定。1.1 顶部、侧栏和内容区怎样分工先看完整工作台的空间关系。画面中哪些区域始终固定哪一块真正承担内容滚动三个区域的职责可以从边界和尺寸上直接辨认。顶部区域高度固定为64px承载品牌、语言、主题状态和账号入口。️左侧区域桌面宽度为232px只负责平台概览、任务域和当前模型入口。️内容区域使用minmax(0, 1fr)获取扣除侧栏后的全部剩余宽度。滚动区域页面外层禁止滚动只有内容容器在数据超高时纵向滚动。我的判断是固定框架解决的不是视觉上的整齐而是管理员的操作位置不能随着内容漂移。这套空间关系最终形成四条实现约束。视口自适应应用宽高跟随浏览器可用空间不对整个页面做等比缩放。剩余空间内容宽度自然等于屏幕宽度减去侧栏宽度。局部滚动表格或表单变长时顶部与任务入口仍保持可见。收缩保护网格轨道和滚动容器设置min-width: 0与min-height: 0。最关键的 CSS 关系可以压缩为下面几行。html, body{width:100%;height:100%;overflow:hidden;}.app{height:100%;display:grid;grid-template-rows:64pxminmax(0,1fr);}.workspace{min-height:0;display:grid;grid-template-columns:232pxminmax(0,1fr);overflow:hidden;}.content{min-width:0;min-height:0;overflow:auto;}minmax()与overflow的行为可以分别参考 MDN。https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/minmaxhttps://developer.mozilla.org/en-US/docs/Web/CSS/overflow1.2 窄屏怎样受控降级固定侧栏不等于所有屏幕都使用同一个宽度。后台按照三个清楚的宽度档位逐级收缩。桌面视口宽度不低于1024px时侧栏保持232px。平板视口768px到1023px之间侧栏收窄到208px。窄屏视口低于768px时侧栏使用184px内容区继续获取剩余宽度。应急滚动只有侧栏内容确实超过视口高度时才允许侧栏自身滚动。窄屏不是把桌面后台强行压成手机应用。它只保证关键入口仍然可达不遮挡内容也不重新引入全局滚动。二、让侧栏围绕任务而不是模型目录Django Admin 默认按应用和模型展示导航。模型较少时很直接CRM 模块增加以后同一层级会同时出现客户、线索、商机、发票、任务、权限与系统配置。2.1 为什么任务域比完整模型树更稳定新的侧栏先回答“管理员现在要处理哪类工作”再回答“具体进入哪个模型”。客户增长集中客户、联系人、线索与商机等增长对象。销售履约集中订单、报价与发票等交付对象。️服务协作集中任务、工单与协作记录。⚙️系统治理集中用户、权限、审计和平台配置。进入某个业务域以后侧栏最多展示五个模型。如果当前页面对应第六个或更靠后的模型它会替换普通条目进入可见区域。这样既守住了侧栏高度也不会让管理员失去当前位置。2.2 精简导航不能绕过 Django 权限任务导航只是重新组织 Django 已经授权的入口不是另一套权限系统。权限来源导航数据继续来自 Django Admin 过滤后的available_apps。人员边界只有 Django staff 才能进入后台普通登录用户仍然被拒绝。数据范围后台面向开发、运维和平台管理员默认展示全平台数据。原生能力模型 URL、CSRF、表单、删除确认和审计历史保持不变。这条边界很重要。界面看起来更像工作台并不意味着它变成了租户员工使用的 CRM 业务端。三、用一套主题令牌管理中国色布局决定操作效率主题决定长时间使用时的阅读感受。为了判断颜色而不是重新判断结构中国红、中国绿和中国蓝使用相同的信息层级与组件位置。3.1 石绿松风为什么适合日常后台石绿松风使用#123746作为顶部深色#2F7D6D作为主色。后者延续了如意 CRM 已有的品牌主色。品牌连续后台、登录页和公共品牌配置保持同一绿色家族。️阅读稳定深青文字、暖白卡片与低饱和浅绿形成清楚层级。状态明确当前任务、按钮、链接、焦点和滚动条共享语义主色。‍工作属性画面沉静克制适合平台管理员连续处理数据。选择默认主题不能只看主色是否好看。更重要的是文字、边框、背景和状态反馈能否构成稳定系统。3.2 宫墙朱砂怎样保持克制中国红方向使用深红顶部、朱砂主色和暖纸色背景。红色进入大面积后台以后哪些位置保持克制才能避免压迫感画面没有把所有按钮和卡片都染红而是建立了清楚的色彩层级。顶部背景#5E211D承担最深的品牌锚点。主操作色#A33A32只进入选中项、按钮和关键焦点。页面底色#F7F2EA用暖白降低红色连续出现的刺激。✨金色点缀#B58A42只用于少量文化提示不承担正文信息。我更愿意把这种红色用于品牌展示或重大配置入口而不是全天候默认主题。它需要守住三条使用边界。危险语义品牌红不能替代错误和删除操作的危险色。视觉节奏大面积区域继续保持暖白让朱砂只负责层级反馈。️主题定位红色表达权威感但不改变导航与数据操作方式。3.3 石青云海怎样强化技术感中国蓝方向使用深海蓝顶部、石青主色和带冷感的浅灰页面。蓝色主要改变了品牌情绪还是改变了信息层级从完整页面可以看到布局、密度和组件关系都没有移动。顶部背景#183E5A让全局工具区更接近技术控制台。️主操作色#316A8B用于选中态、链接、图标与滚动条。浅色层级#DDEAF1承担高亮底色避免高饱和 SaaS 蓝。中性色彩#F3F5F3与#162938保持正文阅读对比。我的看法是石青云海适合偏开发、运维和数据管理的使用习惯。它同时证明了主题系统的一个基本原则。结构不变更换主题后导航层级和内容宽度不能发生变化。语义不变成功、警告、危险和信息状态继续使用共享状态色。体验不变颜色可以改变平台气质但不能改变用户已经熟悉的操作位置。四、把设计规则映射到 Django AdminDjango 官方允许项目模板覆盖 Admin 模板也支持只修改必要的模板接缝。https://docs.djangoproject.com/en/6.0/howto/overriding-templates/4.1 为什么要集中管理主题样式项目把主题值集中到一个 Admin 样式入口再由页面组件读取语义变量。颜色令牌统一顶部、主色、页面、卡片、文字、边框和文化点缀。布局令牌集中定义顶部高度、侧栏宽度和内容区空间关系。交互令牌统一圆角、阴影、焦点环、悬停状态与滚动条外观。语言容量简体中文、繁体中文和英语共用结构不依赖固定文字长度。集中令牌带来的直接收益是修改主色时不必追着模板中的十几个十六进制颜色逐个替换。深色模式也可以沿用同一组语义名称只覆盖对应值。4.2 为什么只做浅层模板扩展这次改造没有引入第三方 Admin 主题也没有另建一套后台前端。项目继续继承 Django 原模板只覆盖品牌头部、平台首页和侧栏等必要位置。升级兼容尽量复用原生模板块减少 Django 升级时的维护面积。行为保留列表、筛选、表单、删除确认和历史记录继续使用原生流程。脚本收敛移除侧栏折叠与快速筛选控件后同时停用只服务这些控件的脚本行为。测试保护导航权限、平台范围、三语言和主题合同都有聚焦测试约束。视觉改造的价值来自秩序而不是覆盖得越深越好。当原生能力已经可靠时浅层扩展往往比重写整套后台更可持续。五、用真实页面证明设计成立静态效果图只能说明视觉方向。最终验收必须回到 Django Admin 的真实模板、真实权限和真实浏览器布局。5.1 自动化检查证明了什么当前实现完成了聚焦测试、代码检查和 Django 系统检查。✅聚焦测试Admin 工作台与国际化相关的21项测试全部通过。代码质量修改过的 Python 文件通过 Ruff 检查。系统状态python manage.py check没有发现配置问题。迁移边界迁移漂移检查没有生成新的模型变更。这些检查覆盖了 staff 访问、非 staff 拒绝、平台范围、组织字段可见性、模型权限和三种语言。它们证明的是后台行为没有因为换肤而绕开原有边界。5.2 浏览器验收还要看哪些细节真实浏览器分别检查了1440、1366、1024、800和375px宽度。️框架尺寸顶部始终为64px侧栏宽度按三个断点稳定切换。滚动归属页面本体没有出现纵向滚动长内容由内容区独立承接。⌨️可访问性键盘焦点使用双层轮廓主要文字组合达到 WCAG AA。主题状态浅色、深色、简体中文、繁体中文和英语均完成页面检查。脚本运行浏览器控制台没有出现侧栏脚本错误。WCAG 2.2 对普通文字最低对比度的说明见官方标准。https://www.w3.org/TR/WCAG22/#contrast-minimum固定框架、任务导航与石绿主题最终解决的是同一个问题让管理员在复杂数据中始终知道自己在哪里、能够去哪里以及当前操作属于什么范围。中国红和中国蓝提供了清楚的主题参照但当前后台只落地石绿松风。这种取舍保留了未来扩展空间也避免为了“可切换”提前维护三套并未投入使用的样式。

相关新闻

2026ai做网站有哪些软件,看看你都了解吗?

2026ai做网站有哪些软件,看看你都了解吗?

2026ai做网站有哪些软件,看看你都了解吗?艾瑞咨询《2026年中国企业数字化建站行业白皮书》里有个挺扎心的数:国内AI建站渗透率破了68%,但抽样超1200家中小企业里,仅31%在生成站点后半年仍持续续费且搜索流量正向增长。…

2026/10/1 22:26:06 阅读更多 →
2026ai一键生成网站哪个好用,靠谱推荐来啦!

2026ai一键生成网站哪个好用,靠谱推荐来啦!

2026ai一键生成网站哪个好用,靠谱推荐来啦!艾瑞咨询《2026年中国企业数字化建站行业白皮书》里有个挺扎心的数:国内AI建站渗透率破了68%,但抽样超1200家中小企业里,仅31%在生成站点后半年仍持续续费且搜索流量正向增长…

2026/10/13 0:50:25 阅读更多 →
2026定制化高效落地的网站开发哪家专业?多家团队横向测评!

2026定制化高效落地的网站开发哪家专业?多家团队横向测评!

据艾瑞咨询与中国信通院联合发布的数据,2025年国内网站建设市场规模已达896亿元,同比增长18.7%,其中高端定制建站需求同比增长29.3%。而据艾瑞咨询联合IDC发布的行业数据,2026年中国网站建设行业市场规模已突破980亿元。与此同时&…

2026/10/11 0:19:11 阅读更多 →

最新新闻

花店管理系统数据库课程设计:从需求分析到SQL实现全流程解析

花店管理系统数据库课程设计:从需求分析到SQL实现全流程解析

简介:数据库课程设计(花店管理系统)是一份完整的数据库课程设计报告,面向计算机相关专业学生,适用于数据库原理与实践类课程的结业设计参考。报告以花店管理系统为案例,详细展示系统规划、用户需求分析、功能结构设计、数据库概念…

2026/10/13 8:41:59 阅读更多 →
Vue+SpringBoot旅游网站全栈开发:架构设计、数据库与部署实战

Vue+SpringBoot旅游网站全栈开发:架构设计、数据库与部署实战

这个项目我前前后后理顺过两遍,最先吸引我的是它把“游记分享、酒店预订、特产商城”这三块完全不同的业务塞进了一个系统里,而且用的是 Vue SpringBoot 这套当前最主流的前后端分离技术栈。对正在做毕业设计、学期课设,或者想完整走一遍全栈…

2026/10/13 8:41:59 阅读更多 →
智慧校园技术选型:供应商考察报告撰写与评估体系全解析

智慧校园技术选型:供应商考察报告撰写与评估体系全解析

智慧校园项目走到技术选型这一步,预算基本有了,需求文档也熬了好几版,但真正让人心里没底的,恰恰是从这一步才开始。面对几家供应商,宣传册都印得漂亮,PPT都做得精致,演讲都讲得天花乱坠&#x…

2026/10/13 8:41:59 阅读更多 →
深入Vue computed:响应式原理、缓存机制与常见陷阱

深入Vue computed:响应式原理、缓存机制与常见陷阱

用过 Vue 的人基本都写过 computed,但说实话,大多数人把它当成一个"模板里写着麻烦所以抽出来"的工具。真正常见的困惑是:为什么 computed 里的数据变了,页面会自动更新?为什么它不会像方法一样每次渲染都重…

2026/10/13 8:41:59 阅读更多 →
dplyr 采样函数剖析:sample_n()/sample_frac() 的加权抽样、分组行为与错误信息链

dplyr 采样函数剖析:sample_n()/sample_frac() 的加权抽样、分组行为与错误信息链

数据分析 【免费下载链接】dplyr dplyr: A grammar of data manipulation 项目地址: https://gitcode.com/gh_mirrors/dp/dplyr 点击查看 免费下载 本篇指南围绕 dplyr 中 sample_n()/sample_frac() 两个(已被 slice_sample() 取代的)采样动…

2026/10/13 8:41:59 阅读更多 →
Java面向对象编程与泛型实战解析

Java面向对象编程与泛型实战解析

1. 面向对象编程核心概念解析面向对象编程(OOP)是Java语言的基石,理解其核心概念对开发者至关重要。在实际项目开发中,我发现很多初级开发者虽然能背诵OOP的四大特性(封装、继承、多态、抽象),但…

2026/10/13 8:40:58 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →