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

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/

译者:张新英

    推荐阅读
  • 密室逃脱绝境系列8酒店惊魂攻略(通关攻略大集合)

    下面内容希望能帮助到你,我们来一起看看吧!密室逃脱绝境系列8酒店惊魂攻略沙发上的布移开点击棋盘。这边下棋就是,控制马将那一排都消灭,完成后拿到钥匙。然后从门的猫眼看出去,看到多个字母牌子。点开桌面上的打字机,就是对着猫眼上看到的字母来填入,12顺序换一下。完成后再将右边钥匙拼图调整好。

  • 装死是一种技能(如何优雅地装死)

    鸟类也是个中高手,包括日本鹌鹑、家鸡和野鸭。她表示,很难记录野外的情况,而在实验室进行捕食者袭击猎物的实验则存在伦理问题。2021年3月《生物学通讯》上刊登了一篇关于这种行为的研究论文,Sendova-Franks是合著者。这通常是一种无意识的生理变化,比如心率降低。雌性盗蛛经常捕食雄性,所以为了交配,雄性会准备一堆食物附着在自己身上,然后开始装死。中美洲慈鲷则在湖底装死,以引诱鱼和其他猎物。

  • 芜湖经开区有书房吗? 芜湖书房中江书苑

    芜湖首家城市书房•天门书院位于华山路商业街5号楼,预计2021年12月底建成开放运营。天门书院设计藏书约20000册,总坐席数约150人。

  • 驾驶证换证后能满分吗(驾驶证满分才能换证吗)

    第五十七条机动车驾驶人应当于机动车驾驶证有效期满前九十日内,向机动车驾驶证核发地或者核发地以外的车辆管理所申请换证。机动车驾驶人在一个记分周期内记分未达到12分,所处罚款已经缴纳的,记分予以清除记分虽未达到12分,但尚有罚款未缴纳的,记分转入下一记分周期。

  • 陈醋泡黑豆 陈醋泡黑豆吃多久白发能变黑

    食材主料:黑豆500g。做法将500克黑豆放入平底锅中,不放油中火炒5分钟,等黑豆皮崩开以后,改成小火继续炒5分钟。炒好后冷却15分钟,放入可以密封的容器中,加入半斤陈醋,浸泡2小时作用,陈醋被黑豆吸收后即可食用,放冰箱可保存半年。功效明目、恢复精神。陈醋泡黑豆能帮助抑制视力下降,让眼睛更加明亮。而且对治疗慢性疲劳、寒症、肩膀酸痛、高血压、高胆固醇等都很有效。

  • 葱爆羊肉哪里好吃(鲜嫩多汁又御寒)

    冬天除了涮羊肉,还能来盘葱爆羊肉,旺火爆炒,葱香四溢。趁热吃,羊肉还带着锅气,一口下去,汁滑肉嫩,满足!----------豆果美食,家庭厨房领域最大的美食社区及交易平台;85万道美食菜谱,任您挑选,可在各大应用市场下载App查看。

  • 起司保存方法(起司保存方法介绍)

    起司在保存的过程中一定要和氧气彻底的隔离开来,否则起司是很容易会发生发霉变质的问题的。起司在保存的时候一定要有一定的水分,这样起司的口感会更更好一些,否则起司是会产生失重的问题的,而且起司的味道也会发生变化。但是如果起司当中的水分含量过大的话,有时候容易会导致腐败和变质的问题的,但是这个量一定要很好的掌控好。

  • 西方婚戒的戴法(王室也追婚礼季)

    但这并不等于千篇一律,恰恰相反,他们的戒指几乎都是“独一无二”。据说是未婚夫亲自参与设计,款式则致敬了母亲约克公爵夫人。王室要保持优雅内敛,而明星们则希望自己永远是万众瞩目的焦点。伊丽莎白·泰勒那颗重达33克拉的克虏伯钻戒,AmalClooney的7克拉钻戒、ParisHilton的卡地亚钻戒都采用了祖母绿型切割。

  • 为什么有的2.5t和3.0t马力小呢(为什么同样是2.0T)

    为什么同样是2.0T一般来说,排量越大,气缸也就越大,容纳的混合气体更多,马力就会大的比如说美国的Liebherr的T264矿用卡车,排量超过78L,「哈哈」,最大功率已经达到3000kW,大概是4079匹马力但是马力大。

  • 新学期学习计划2021

    语文作业要字迹工整,仔细分析;数学作业,不能马虎,写完后认真检查并验算;英语作业,书写规范,字迹工整。想要做一个合格的学生,就要做到文明诚信美德。