为什么 Django 后台管理系统那么“丑”?

哈喽大家好,我是咸鱼

相信使用过 Django 的小伙伴都知道 Django 有一个默认的后台管理系统——Django Admin

它的 UI 很多年都没有发生过变化,现在看来显得有些“过时且简陋”

在这里插入图片描述
那为什么 Django 的维护者却不去优化一下呢?原文作者去询问了多位维护者了解了其历史和”为什么这么设计“

下面让我们来一起看下

当我在 Djangocon US 上跟别人交流时,一个问题总是不断被提及:“为什么 Django Admin 那么的 ’丑陋‘ ?”

Djangocon US 是一个为期五天的国际会议,由 Django web 框架社区举办,每年在北美举行

在这个会议上,从全世界各地而来的 Django 开发者都能够学到使用 Django 构建的各种应用程序的细节,深入理解已经熟悉的概念

我在这里解释一下,请原谅这个标题是为了引人注意才起的,但这个问题有很多种形式:

  • 为什么 Django Admin 有一个过时的 UI ?
  • 为什么这些年来 Django Admin 没有太大的变化?
  • 为什么 Django Admin 没有插入(insert)功能

作为一个老前辈(我第一次参加 Djangocon 是 2012 年,可以说是一个世纪以前的 web 开发时代),我的答案是:Django Admin 这么”丑陋“是为了阻止你把它交给客户或者最终用户

Janelle 想知道真正的答案,为了不让她失望,我接受了她的挑战。我四处寻找,穿过广阔的会议室和笔记本电脑屏幕,寻求 Django 维护者的智慧,我从一名老师变成了学生

”Django Admin 并不丑。更确切地说,(Django 维护者们)并没有努力让它成为一个漂亮的终端用户工具“ ,Ken Whitesell 说

Ken Whitesell 是 Django 的长期用户,也是 Django 社区中的常客,他从 1.2 版本开始就开始使用 Django,Ken 接着指出,问题的答案就在 Django 文档中显眼的位置:

”Django Admin 的用途仅限于组织的内部管理工具,它不是用来构建整个前端的“

在这里插入图片描述
Ken 还说这个问题在 Django 论坛中一次又一次地出现(https://forum.djangoproject.com/search?q=The%20admin%27s%20recommended%20use%20is%20limited%20to%20an%20organization%27s%20internal%20management%20tool)

所以 Ken 的回答让我知道了 ”how“ ,我现在想知道 ”why“:为什么 Django admin 故意被设计成这样

”Django admin 是为 Phil 构建的“,Jacob Kaplan-Moss说

Django 的共同创建者 Jacob 给了我漂亮的答案,Phil 指的是 Phil Cauthon,Phil 当时是 Lawrence.com 周报的编辑,这是有史以来最早建立的 Django 网站之一

因为 Django 最初是用于制作在线新闻 Web 站点,Django admin 由内部人员使用,内部人员知道该如何使用它。”如果某些内容被编辑或搞砸了,你可以走到别人的办公桌前,问‘你为什么这么做?’ ”Jacob 讲述了最初的 Django 管理工作流程

Ken 和 Jacob 都达成了共识,这也与我的答案一致,Django admin 更多的是组织管理和信任。

你可以在管理/组织/政治上控制谁使用 Django admin 以及他们用 Django admin做什么,你对员工有一定程度的信任。你不需要投入时间和精力使 Django admin成为面向客户的工具,供不熟悉您的产品的人使用

”甚至在 0.9x 版本中,我们会发现一张图片上面写着:Django admin不是你的应用程序“,Curtis Maloney 说

Curtis Maloney 在网上被称为 FunkyBob,他回忆起 Django 早期的时候说,”甚至在 0.9x 版本中,我们会发现一张图片上面写着:Admin 不是你的应用程序“

Curtis 和我都认为 Django admin 是一个很棒的数据库工具,而且大家也应该这样去对待它

正如 Curtis 所说,”鼓励大家去构建自己的管理界面,并把 Django admin 当作一个数据库管理工具,这为很多人节省了痛苦,定制它的努力比回报快得多“

总之,Django admin 仍是人类使用的工具,所以我们应该继续改进它让它更容易访问

最后,如果你发现需要将 Django admin 交给客户或者最终用户,请考虑使用 Wagtail ModelAdmin,它几乎跟 Django admin 一模一样(而且与现有的 Django admin 一起运行)

Wagtail ModelAdmin 具有巨大的可访问性、细粒度的控制和为非技术最终用户构建的良好的用户体验

原文链接:https://www.coderedcorp.com/blog/why-is-the-django-admin-ugly/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/171865.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么实现在微信公众号下单的功能呢

实现在微信公众号下单的功能,需要结合微信公众平台和后端开发技术。下面将介绍整个实现过程,包括前期准备、开发流程和后期运营等方面。 一、前期准备 确定商品信息:确定要在微信公众号上销售的商品种类、价格、库存等信息。设计订单系统&am…

linux(nginx安装配置,tomcat服务命令操作)

首先进系统文件夹 /usr/lib/systemd/systemLs | grep mysql 查看带有命名有MySQL的文件夹修改tomcat.service文件复制jdk目录替换成我们的路径替换成我们的路径进入这个目录,把修改好的文件拖到我们的工具里面重新刷新系统 systemctl daemon-reload查看tomcat状态…

同为科技(TOWE)工业连接器:保障高效、可靠、安全的电气连接

国内经济快速的发展,人们生活水平的不断提高,基础设施的建设是发展的基础,完善的基础设施对加速经济的发展起到至关重要的作用。其中,基础建设中机场、港口、电力、通讯等公共设施必须配套相应的电气设施,工业用插头插…

js ::after简单实战

::after的作用是在元素后面再加个XXX样式 工作中遇到了一个表格,鼠标指到单元格要有个整行编辑态的效果,下面写个简单的demo 有人可能会说了,直接修改某个单元格的hover样式不就行了嘛,问题是如果鼠标指到单元格和单元格直接的…

单链表的实现(Single Linked List)---直接拿下!

单链表的实现(Single Linked List)—直接拿下! 文章目录 单链表的实现(Single Linked List)---直接拿下!一、单链表的模型二、代码实现,接口函数实现①初始化②打印链表③创建一个结点④尾插⑤尾…

Threejs_09 gltf模型的引入(效果初现)

本节使用到的图片、素材、gltf文件,都是老陈打码的原素材 支持!!!!!!!!!!!!!!!&#x…

使用USB转JTAG芯片CH347在Vivado下调试

简介 高速USB转接芯片CH347是一款集成480Mbps高速USB接口、JTAG接口、SPI接口、I2C接口、异步UART串口、GPIO接口等多种硬件接口的转换芯片。 通过XVC协议,将CH347应用于Vivado下,简单尝试可以成功,源码如下,希望可以一起共建&a…

Vue3 customRef自定义ref 实现防抖

防抖就是防止在input 框中每输入一个字符就要向服务器请求一次,只要在用户输入完成过一段时间再读取用户输入的内容就能解决这个问题,减小服务器的压力。 1. 自定义ref是一个函数,可以接受参数。 比如我们自定义一个myRef: setu…

拖拽场景遇到 iframe 无法拖拽的问题解决方案

描述一个场景:在网页中,分为上下两部分布局,下半部分显示操作日志,下半部分的区域高度是可拖拽调整的,但是如果下半部分嵌入一个 iframe 的时候,往上拖拽可以,但是往下拖拽,一旦到了…

【AICFD案例教程】IGBT对流换热分析

AICFD是由天洑软件自主研发的通用智能热流体仿真软件,用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程,帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

技术分享| anyRTC之RTN网络

RTN(Real-time Network)中文名:实时音视频传输网络。 RTN是最近几年由各大RTC的云厂商提出的一个全新架构的音视频实时传输网络概念。类似于直播的CDN网络,RTN是对音视频的实时性又强烈要求的场景而设计的,原理上全球端到端的时延通过RTN网络…

springboot集成nacos作配置中心,动态配置不生效

总体概要 springboot3.0,nacos,jdk17使用nacos配置中心,热更新,使配置动态生效 本文主要介绍springboot怎么集成nacos作为配置中心,使其配置在不重启服务的情况下,怎么生效的。 所用组件及其版本 组件版本…

GNSS技术在农业领域的创新应用

全球导航卫星系统(GNSS)技术在农业领域的广泛应用为现代农业带来了革命性的变革。从精准农业到农业机械自动化,GNSS技术为提高农业生产效率、减少资源浪费、实现可持续发展提供了关键支持。本文将深入探讨GNSS技术在农业领域的应用&#xff0…

数据结构~~~~ [队列] ~~~~

文章目录 队列队列的概念与结构队列的接口实现***队列的初始化******队列的销毁******队列的插入与创建节点******队列的删除******队列的队头数据******队列的队尾数据******队列的判空*** 队列 队列的概念与结构 队列的插入数据在队尾出数据在队头(尾入头出&…

影视行业如何远程完整快速传输大文件?

影视行业是一个充满创意和协作的领域。在影视制作中,涉及到多个环节和部门,包括编剧、导演、摄影、剪辑、配音、视效等。这些环节和部门通常分布在不同的地点,甚至不同的国家。因此,影视制作过程中需要频繁进行远程传输&#xff0…

第1关:图的邻接表存储及求邻接点操作

任务要求参考答案评论2 任务描述相关知识编程要求测试说明 任务描述 本关任务:要求从文件输入顶点和边数据,包括顶点信息、边、权值等,编写程序实现以下功能。 1)构造图G的邻接表和顶点集,即图的存储结构为邻接表。 …

VCP-DCV VMware vSphere,即将开课~想了解点击查看

VCP-DCV VMware vSphere 本周开课~ 想报名的必须提前预约啦 👇👇👇 课程介绍 本课程重点讲授如何安装、配置和管理VMware vSphere 8.0(包括VMware ESXi™ 8.0和VMware vCenter Server™ 8.0) 本课程将帮助您做好…

docker打包chatpdf(自写)

docker打包上传 docker build -t kitelff/chatpdf:v0.1 .##修改镜像名字 docker tag c2c1a0eb4e08 kitelff/chatpdf:v0.1## push docker push kitelff/chatpdf:v0.1上传文件,测试效果

Rust语言精讲:数据类型全解析

大家好!我是lincyang。 今天,我们将深入探讨Rust语言中的数据类型,这是理解和掌握Rust的基础。 Rust语言数据类型概览 Rust是静态类型语言,所有变量类型在编译时确定。Rust的数据类型分为两类:标量类型和复合类型。…