高考考试网
当前位置: 首页 高考资讯

django设置框架(Admin制作成一个轻量级的仪表控制界面)

时间:2023-08-13 作者: 小编 阅读量: 1 栏目名: 高考资讯

幸运地是,DjangoAdmin的开发人员让我们能够轻松实现界面定制。为了充分发挥DjangoAdmin的强大功能,我们会在内置的ModelAdmin类上构建仪表界面。在这种情况下,Django将会进行重定向,因此我们不需要去干涉和回应响应。为了获得原生的Django外观,我们需要按照Django的展现方式来呈现表格。下图便是目前的界面效果:只有一张表格的DjangoAdmin仪表界面一张汇总表并不需要太多的数据统计结果。

如何将Django Admin制作成一个轻量级的仪表控制界面——在Djongo Admin界面中添加数据汇总图表

(文中的所有代码都可在该连接中找到:https://gist.github.com/hakib/ec462baef03a6146654e4c095142b5eb)

Django Admin是一款强大的应用数据管理工具。但是在它界面设计中并没有加入数据汇总图表。幸运地是,Django Admin的开发人员让我们能够轻松实现界面定制。

下图便是最终实现后的界面效果:

Django Admin 仪表界面效果

我要完成这项工作的原因

有很多的工具、应用程序和软件包都能够生成非常美观的仪表界面。但是我个人觉得,大多数时候我们所需要的只是一张简单的汇总表和一些数据统计图,除非你是要设计一个真实的仪表盘。

其次,不需要任何依赖,这一点同样很重要。

如果你只是想让你的管理界面更加完善,那么这个方法绝对值得考虑。

设置

我们将利用Sale类来创建一个模型。

为了充分发挥Django Admin的强大功能,我们会在内置的ModelAdmin类上构建仪表界面。

我们需要创建一个模型来实现这个目的:

使用了代理的模型能够扩展原始模型的功能,且无需在数据库中创建真实的表。

现在我们有了模型,接下来要做的就是定义ModelAdmin类:

因为定义的类继承自标准ModelAdmin类,所以我们可以利用它的所有属性。在这个例子中,我添加了一个date_hierarchy参数,可以依照创建时间来区分数据。之后的数据统计图中我们将会用到它。

为了使管理员界面保持其原有的样式和风格,我们将扩展Django的change_list模板,并将我们自己编写的内容添加到result_list块中:

到目前为止,我们的界面效果如下图所示:

简单的Django Admin仪表界面

添加汇总表

传送到模板中的内容将由ModelAdmin类通过changelist_view函数来进行填充。

要想在模板中展示表格内容,我们就得在changelist_view函数中获取数据,并将其添加到页面当中:

下面我们来分解一下这个过程:

1、调用super函数来让Django实现相应的功能(填充头部信息,面包屑导航,查询集,过滤器等等)。

2、从页面内容中提取创建好的查询集。此时将会使用任意内联过滤器或者用户自己选定的日期层次结构进行过滤查询。

3、如果无法从页面中获取到查询集,则很有可能是因为查询参数无效。在这种情况下,Django将会进行重定向,因此我们不需要去干涉和回应响应。

4、按照类别来汇总总销售额,并返回一个列表变量(下一节中我们将用到字典metrics)。

现在我们已经有了数据,只需要将其呈现在模板中:

页面的版面风格也是很重要的。为了获得原生的Django外观,我们需要按照Django的展现方式来呈现表格。

下图便是目前的界面效果:

只有一张表格的Django Admin仪表界面

一张汇总表并不需要太多的数据统计结果。我们可以使用metrics字典并且进行一些Django ORM运算来快速求得数据统计结果。

这是一个非常酷的技巧……

下面我们把数据统计结果添加到汇总表中:

汇总表格已经基本成形:

带有汇总表格的Django Admin仪表界面效果

添加过滤器

由于我们使用的是“常规的”ModelAdmin类,所以过滤器已经包含在内。我们在其中添加一个设备过滤器:

效果如下图所示:

带有过滤器的Django Admin仪表界面效果

添加一张统计图

如果没有统计图,整个仪表界面就显得不够完善,因此我们将会添加一张条形图来展现销售额与时间之间的关系。

为了绘制统计图,我们将会使用纯HTML语句和一些很好用的带有flexbox的在线CSS样式表。为了让数据能够对应条形图中长条的高度,这些数据将会按照时间顺序组成百分比序列。

回到changelist_view文件中,添加如下代码:

下面我们将条形图添加到模板当中,并为其设置相应的样式:

对于那些不熟悉flexbox的人来说,需要解释一下上面这段CSS的内容,其含义是“从下往上画,向左对齐,调整宽度为适应”。

现在的仪表界面效果如下所示:

带有基本的统计图的Django Admin仪表界面效果

效果看起来还不错,但是……图表中的每根长条只代表一天。如要我们尝试只展示一天的数据将会发生什么?如果是展示数年内的数据又会发生什么?

数年内的每日数据条形图

这样的统计图不仅可读性差,而且存在危险。因为获取如此多的数据将会淹没服务器,并且会产生一个非常大的HTML文件。

Django Admin有一个日期层次结构 - 让我们看看能否根据所选的日期层次结构调整条形图所显示的时间范围:

  1. 如果用户选择显示一天的数据,则每个长条表示一个小时的数据(最多24个长条)
  2. 如果用户选择显示一个月的数据,则每个长条表示一天的数据(最多31个长条)
  3. 如果用户选择显示一年的数据,则每个长条表示一周的数据(最多52个长条)
  4. 选择显示多于上述三种情况之外的数据时,每个长条表示一个月的数据。

现在我们只需要对changelist_view函数进行一个很小的调整:

传递给Trunc函数的period值现在成为了函数参数。最终效果如下:

这是一个非常不错的解决途径……

英文原文:https://3perf.com/blog/link-rels/

译者:张新英

    推荐阅读
  • 母亲节小贺卡祝福语(母亲节贺卡祝福语)

    祝妈妈母亲节快乐!母亲节到了,祝亲爱的妈妈身体健康快乐幸福。祝母亲节日快乐,健康长伴。祝福亲爱的妈妈,永远健康幸福,母亲节快乐。

  • 心脏哪些病有胸痛症状(胸痛就是心脏有问题)

    当冠状动脉内的斑块发生破裂,形成血栓并完全堵塞血管,这部分血管供应的心肌就会发生坏死,即心肌梗死。也就是说,出现胸痛,并不一定是心脏出现问题,还可能是其它组织器官的病变。食管位于人体胸腔处,与心脏临近,因此,胃食管反流时所产生的胸痛,有时候会与心绞痛混淆。高血压可使动脉壁长期处于应急状态,导致血管内膜和中膜分离,血液流入其中,形成夹层。这是一种严重的致死性疾病,发病24小时内死亡的占72.8%!

  • 蒜泥保存方法(蒜泥怎么做口感更细腻呢)

    蒜泥保存方法蒜泥的长期保存方法最好的就是放在冰箱之中了,这样既方便又简单,而且保存的时间还很长。不过做好的蒜泥还是尽快的吃掉,因为长期的保存,难免会导致其营养价值的挥发。并且在蒜泥的保存中,千万不要加入冷水,若是实在想加入一些水的话,最好是加入温开水,这样能保证蒜泥的保存时间。

  • 长辈生日祝福语简单(让长辈忍不住夸你有文采)

    长辈生日祝福语简单我会赚钱,所以不需要你是盖茨,我热爱和平,所以不需要你是拉登,我遵守交通法规,所以不需要你是李刚,呵呵,我只要你是我的老爸,老爸,生日快乐。愿父亲生日快乐!年年岁岁花相似,岁岁年年福不重;醒来警觉不是梦,眉间皱纹又一重。生日的烛光中摇曳一季繁花,每一支都是我的祝愿:生日快乐!岁月飞逝,青春不老。

  • 文言文翻译具体方法(翻译的十种方法及口诀)

    根据陈述对象可以排除干扰项,确定答案范围4、析结构。所以要保持良好的心态,调动各种手段,善于前后推导,整体把握语意。凡是古今意义相同的词,以及古代的人名、地名、物名、官名、国号、年号、度量衡单位等,翻译时可保留不变。把古汉语倒装句调整为现代汉语句式。

  • 150马力相当于多大排量(150马力相当于排量1.4L)

    接下来我们就一起去研究一下吧!150马力相当于多大排量150马力相当于排量1.4L。马力英文称为“HorsePower”,顾名思义是马匹干活的能力,简称“Hp”,英、美等国也以此当作英制马力的单位。马力功率的常用单位,它是工程技术上常用的一种计量功率的单位。在现行初、高中课本中,功率的单位马力,是指米制马力而不是英制马力,英国、美国等一些国家采用的是英制马力。

  • 2022年秋季义务教育课标(2022年义务教育新课标改革)

    新的方案和标准将于在今年秋季开始执行。爱阿教育了解到,大多数家长对新课标的调整给予肯定。同时,爱阿教育认为面对当前普遍的“鸡娃”内卷的焦虑,家长也要保持良好心态,助力孩子全方位发展。爱阿教育精益求精持续优化3D资源教材本次义务教育课程方案和课程标准的改革,也受到教育领域各科技企业的高度关注。爱阿平台将进一步在增加教学趣味性、交互性,提供多样性教学方式等方面提出优化需求。

  • 康佳电视机遥控器下载(康佳电视机万能遥控器)

    前不久,康佳在苏宁首发了劲速电视S8000U系列,并创新性举行了线上发布会。同时也充分向市场和消费者传达了康佳电视有变革、求突破的决心和信心。本次发布的康佳劲速电视S8000U系列,在外观、画质、内容应用上均有非常大的突破,绝对在康佳今年主打的劲速电视系列中遥遥领先。

  • 手机卡顿清理根本没有用(恢复出厂设置等方式仍然不管用)

    手机之所以出现卡顿的现象主要来自两个原因,第一个原因就是机身系统软件造成的,通常情况下,苹果手机的iOS系统相对于安卓系统的手机不容易卡顿,高端机相对于中低端机也不容易卡顿。安卓系统开放,不同的应用软件有不同的权限,并且软件类型鱼龙混杂,这样就会造成机身的大量缓存。除了手机用久了造成缓存增多导致手机变卡顿外,运行过多的程序也会造成机身内存过载导致手机变卡顿。

  • 瓢虫外形特点有哪些(瓢虫的相关知识)

    瓢虫外形特点有哪些瓢虫的成虫体长1.0~16.0mm,体型呈短卵型至圆形,身体背面强烈拱起,腹面通常扁平。从背面看,前胸背板和鞘翅基部常紧密相连,通常宽度相近。头常嵌入前胸中,有时完全被前胸背板盖住。大多数瓢虫具有以下3个特征:即下颚须端节斧形,跗节隐4节式和第一腹板具后基线,这些特征可与其它近缘种相区分。但有些瓢虫的体长形,长于体宽2倍以上,如北美产的大斑长足瓢虫。