当前位置: 首页 > news >正文

如意 Django CRM Admin UI 设计复盘:固定框架、任务导航与石绿松风

OK,OK,大家好,欢迎大家来到大鹏 AI 教育,我是张大鹏。

一个模型越来越多的 Django Admin,最先失控的通常不是功能,而是页面秩序。

顶部跟着页面离开视口,左侧菜单长到需要单独滚动,内容区又没有真正使用剩余宽度。

当颜色散落在模板和组件中以后,选中态、按钮、文字和滚动条还会逐渐长成几套风格。

如意 Django CRM 的改造目标很明确:让后台成为一个位置稳定、任务清楚、适合长时间工作的内部平台控制台。

现在落地的结果是固定顶部、固定侧栏、内容区独立滚动,以及统一的“石绿松风”主题系统。

一、先让后台拥有稳定的工作位置

后台不是一张固定比例的海报。

它必须铺满浏览器可用视口,并在表格、表单和审计记录不断增长时保持全局操作的位置稳定。

1.1 顶部、侧栏和内容区怎样分工

先看完整工作台的空间关系。

画面中哪些区域始终固定,哪一块真正承担内容滚动?

三个区域的职责可以从边界和尺寸上直接辨认。

  • 🧢顶部区域:高度固定为64px,承载品牌、语言、主题状态和账号入口。
  • 🗂️左侧区域:桌面宽度为232px,只负责平台概览、任务域和当前模型入口。
  • 🖥️内容区域:使用minmax(0, 1fr)获取扣除侧栏后的全部剩余宽度。
  • 🧵滚动区域:页面外层禁止滚动,只有内容容器在数据超高时纵向滚动。

我的判断是,固定框架解决的不是视觉上的整齐,而是管理员的操作位置不能随着内容漂移。

这套空间关系最终形成四条实现约束。

  • 📐视口自适应:应用宽高跟随浏览器可用空间,不对整个页面做等比缩放。
  • 🧮剩余空间:内容宽度自然等于屏幕宽度减去侧栏宽度。
  • 🪟局部滚动:表格或表单变长时,顶部与任务入口仍保持可见。
  • 🧷收缩保护:网格轨道和滚动容器设置min-width: 0min-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/minmax

https://developer.mozilla.org/en-US/docs/Web/CSS/overflow

1.2 窄屏怎样受控降级

固定侧栏不等于所有屏幕都使用同一个宽度。

后台按照三个清楚的宽度档位逐级收缩。

  • 📏桌面视口:宽度不低于1024px时,侧栏保持232px
  • 🧳平板视口:768px1023px之间,侧栏收窄到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 Admin

Django 官方允许项目模板覆盖 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 浏览器验收还要看哪些细节

真实浏览器分别检查了144013661024800375px宽度。

  • 🖼️框架尺寸:顶部始终为64px,侧栏宽度按三个断点稳定切换。
  • 🧲滚动归属:页面本体没有出现纵向滚动,长内容由内容区独立承接。
  • ⌨️可访问性:键盘焦点使用双层轮廓,主要文字组合达到 WCAG AA。
  • 🌗主题状态:浅色、深色、简体中文、繁体中文和英语均完成页面检查。
  • 🪛脚本运行:浏览器控制台没有出现侧栏脚本错误。

WCAG 2.2 对普通文字最低对比度的说明见官方标准。

https://www.w3.org/TR/WCAG22/#contrast-minimum

固定框架、任务导航与石绿主题最终解决的是同一个问题:

让管理员在复杂数据中始终知道自己在哪里、能够去哪里,以及当前操作属于什么范围。

中国红和中国蓝提供了清楚的主题参照,但当前后台只落地石绿松风。

这种取舍保留了未来扩展空间,也避免为了“可切换”提前维护三套并未投入使用的样式。

http://www.jsqmd.com/news/1342774/

相关文章:

  • 亚洲服务器地址+密码
  • Unity游戏开发:Excel数据驱动配置模块的设计、实现与优化
  • 2026年8月闵行区白事全程代办、松江区全真丝高档寿衣公司哪家好|上海祥云阁寿衣店地址电话核对 - geo88
  • 3步掌握Nintendo Switch游戏备份:nxdumptool完整使用指南
  • 孩子鼻炎影响睡眠学习?2026年氧大夫NS2A3日常护理法 - 科技焦点
  • 绍兴武术学校综合实力参考:2026年全国连锁品牌合作校区招生推荐 - 圣龙武术朱老师
  • 北京离婚争取孩子抚养权哪家律所值得咨询?从子女年龄、照顾事实到抚养方案,2026年专业评估 - 科技焦点
  • PDF拆分成多个PDF用哪几款工具好 七款PDF合并与拆分工具实测盘点
  • 5个AI工具实操指南:从Transformers文本分类到Ollama本地部署大模型
  • 5分钟彻底解决PCSX2启动崩溃:VC++运行时库完全修复指南
  • 2026广州办公室写字楼企业搬迁专业靠谱服务商大盘点:合规实力口碑兼备+选型避坑全指南 - 禧燕搬家
  • 整个跨越4次太平洋的代理服务器链路搭建完成------速度非常慢
  • 2026 年新消息:无锡专业的实体行业AI获客公司综合实力解析,别再烧钱了:实体生意如何用AI精准捕获客户? - 行业鉴选官
  • 2026ai做网站有哪些软件,看看你都了解吗?
  • 北京刑事犯罪辩护想找律师哪家律所值得推荐?从同类罪名经验、程序阶段到辩护策略,2026年选型参考 - 科技焦点
  • 解决网络通信测试难题的完整方案:PacketSender实战指南
  • Project Graph:重新定义思维可视化的免费开源节点图工具
  • 构建健壮的AI输出处理管道:从Prompt工程到生产部署
  • 天道4
  • 计算机毕业设计之电子邮件收发系统的设计与实现
  • AppSmith零代码平台终极指南:快速构建企业级应用的完整解决方案
  • PyTorch核心实操:从张量计算到混合精度训练的5个关键步骤
  • 2026社区团购订货小程序推荐:团长每天收单混乱时该选哪类系统
  • 石家庄保利花园整装工地工艺实探 - 资讯综合
  • 直接通往日本服务器的链路搭建完成------速度很慢
  • Flask-Script常见问题解答:从安装错误到命令冲突的解决方案
  • 板式初效防尘网热门厂家选哪家?重性能交期认准深圳市恒丰滤业有限公司 - 品牌优推
  • 2026年云端探险漂挑选攻略 上犹大金山漂流等优质景区盘点 - 拜了拜了
  • 3 步全解!执业证丢失登报怎么办?零跑腿高效办理
  • Godot 2D平台跳跃游戏终极指南:从零开始构建类银河战士恶魔城游戏