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

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

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

幸运地是,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/

译者:张新英

    推荐阅读
  • 最佳演讲技巧(演讲的最佳技巧)

    最佳演讲技巧演讲稿、PPT;辅佐对象:演讲道具;音乐、视频等辅佐材料仪容一定要到位:无论是女士还是男士,整齐、清洁、利落、自信的仪容是作为一个演讲者必须具备的形象。在观众中寻找笑脸,并在演讲时有意识地对着他们讲话,以观众为重,千万不要把所有注意力放在自己身上,而忽视了演讲的本质。因为适当的移动位置会使观众参与感更强,同时也能舒缓自己和观众的紧张情绪,某些要表达的观点得到更好的传达。

  • 我的三个母亲电视剧大结局(柯立遗憾离开了人世)

    下面希望有你要的答案,我们一起来看看吧!我的三个母亲电视剧大结局明白真相的小山摸着柯立腹部那道捐肾留下的创疤痕喊出妈妈的时候,柯立带着一生的爱和理想、压抑、痛苦、遗憾离开了人世,但嘴角上却是一丝甜蜜的笑意。柯立弥留之际,董环和张洁才知道给小山捐肾的人原来就是柯立,如梦方醒的二人抱着她泣不成声,姜二成说柯立的遗嘱只有一句话,感于董环和张洁对小山的无私母爱,她放弃自己要回儿子的狭隘思想。

  • 凯越油耗如何?(凯越油耗大主要是哪些原因)

    凯越综合油耗4.7-5.0L/100km。凯越目前在售5款车型,包括CVT豪华型和CVT精英型,综合油耗5.0L/100km。以上是NEDC综合油耗,是车辆在NEDC测试规定下测得的综合工况油耗数据。开车时,以下五个小贴士有助于减少油耗:在启动车辆的过程中,应该以低档起步,轻踩油门,慢慢提高速度。不要猛踩油门,会成倍增加油耗。通过预测路况,缓慢而均匀的加速或制动可以将燃油经济性提高20%之多。保持适当的胎压:将胎压保持在制造商推荐的水平。

  • 必须与必需的区别(必须与必需有哪些不同)

    以下内容大家不妨参考一二希望能帮到您!必须与必需的区别“必须”是副词,表示事理上和情理上必要,也用于加强命令语气,后面常修饰动词或形容词,如学习必须刻苦钻研、今天的任务必须完成、你必须来、犯了错误必须要承担责任等等。“必需”是动词,表示一定要有、不可少,后面常修饰名词,如日用必需品、煤铁等是发展工业所必需的原料、钙是人体所必需的元素等等。“必须”倾向于主观表达,而“必需”则倾向于客观表达。

  • 魔兽官方怀旧服推荐(暴雪将在嘉年华公布官方怀旧服)

    不过近日,N服管理员在论坛上发帖称,暴雪将在11月的嘉年华上公布怀旧服的消息。N服管理员表示:暴雪方面已经知道N服的近30万玩家会为官方的怀旧服买单;而且根据N服与暴雪的会谈,暴雪目前已经掌握了怀旧服的一切东西,包括怀旧服的技术代码等问题。由于这只是N服单方面的声明,看上去更像是一种投机行为,暴雪对怀旧服到底作何打算,只有等嘉年华才能揭晓了。

  • 以前的诺基亚手机如何刷机(诺基亚塞班手机刷机演变史)

    2006-2009年里可以说是Nokia刷机盛行的三年,这也是Nokia一统江湖的时代。在那个年代里,这个网站每天都会更新大量的帖子,而且对于Nokia机型来说,最常用的刷机方法就是凤凰跟JAF刷机。Nokia刚出场的机型是无法支持自带程序卸载的,而且在当时手机内存极小。不过随着之后Android系统的崛起,Nokia塞班系统在2013年宣告灭亡,自此塞班刷机退出舞台。

  • 英国女王多大年龄去世了(96岁英国女王突然身体不适)

    据美联社报道,女王6月2日现身阅兵仪式后,当晚宣称因身体原因,将缺席6月3日在圣保罗大教堂举行的感恩仪式。白金汉宫2日晚宣布,女王在庆祝活动首日身体经历了“一些不适”,将不会参加6月3日的庆祝活动。近几个月来,96岁高龄的女王因健康状况不佳且年事已高,已减少公开露面。2月,她新冠病毒检测结果呈阳性,但症状轻微。安德鲁王子也被排除在外,有报道称他新冠病毒检测阳性,此前他因性丑闻已辞去公职。

  • 抖音可以吗可以是什么梗(抖音可以吗可以解释)

    下面更多详细答案一起来看看吧!抖音可以吗可以是什么梗抖音可以吗可以是泰剧《以你的心诠释我的爱》。“可以吗,可以啊”是在泰腐剧《以你的心诠释我的爱》中攻受之间的一个对话,原意是表示男男之间袒露爱意的情话,可以直译为可1吗?可1,具用浓重的泰式风格。因为剧很好看,这个梗又很戳是关键点,所以就很多人拿来拍视频了。现在被很多网友用来在情侣之间表白使用,一时间在抖音上火了起来。

  • 魔兽世界tbc刚满级去哪里搞武器(打年兽获得神级BUFF)

    等燃放烟花以后玩家就会得到春节邀请函,这件物品可以让玩家传送到月光林地。击杀年兽以后玩家不要慌着交任务,因为还任务会得到一个艾露恩的祝福BUFF,使自身所有属性提高10%,持续1个小时的时间。艾露恩的祝福只有一次机会,所以大家要好好把握利用好这仅有的一次机会,让艾露恩的祝福发挥该有的作用。如今春节活动还会持续一段时间,相信那些世界顶级的竞速团也会好好利用艾露恩的祝福打出更好的成绩。

  • 2021年南宁武鸣区实验学校招生地段划分

    3.解放街一巷1-58号门牌,和平街门牌4号、5号、6号。