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

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/

译者:张新英

    推荐阅读
  • 胚胎移植着床后应该注意哪些事项(胚胎移植手术之后)

    因为每个人的体质不同,导致胚胎着床的时间出现差异。正常情况下,胚胎移植之后五天到八天的时间即可以顺利着床。因此在手术之后应该保持良好的心态,糟糕的心情对胚胎着床十分不利。最好是在胚胎移植后的两个星期左右到医院验血即可。从上述内容可以发现,试管胚胎移植后的着床时间并不统一,受到很多因素的影响。

  • 停车场系统品牌有哪些(什么是智能停车场系统)

    智能停车场系统不仅大大节约了人力物力,降低了运营成本,也更加安全可靠,方便快捷。如果你有购买智能停车场系统的打算,一定要选择大众认可的品牌,因为经过大众认可的品牌才是好品牌,更有质量保证。

  • 好听的微信顶置语(好听的微信顶置语精选)

    以下内容大家不妨参考一二希望能帮到您!好听的微信顶置语风可以吹起一张白纸,却无法吹起一只蝴蝶,因为生命的力量在于不顺从。只有一条路不能选择——那就是放弃的路;只有一条路不能拒绝——那就是成长的路。生命像直线,要勇往直前,不能回头;生活是曲线,蜿蜒曲折能看到更多的风景。女生不需要懂太多,只要知道体重越轻钱包越鼓越幸福就好了。人间两件事不能等:行善和尽孝。出生规定起点,选择决定方向,心态左右生活。

  • 梦见好多小狗(梦见很多小狗的意思)

    以下内容大家不妨参考一二希望能帮到您!梦见好多小狗打算出门的人梦见小狗,建议虽然有延误时间往返,能平安无事。怀有身孕的人梦见小狗,预示生女。创业的人梦见小狗,代表先有亏损,重新整理再经营,有利可得。谈婚论嫁的人梦见小狗,说明有第三者介入破坏,婚姻难成。准备考试的人梦见小狗,意味着理科成绩还好,口试文科成绩差,未如愿。

  • 白鹅一般几个月下蛋 白鹅几个月下蛋,鹅下蛋时间

    白鹅学名大天鹅,又名天鹅和鹄。白鹅4龄时性成熟,通常在开始繁殖的前一年冬天或在春季迁徙的路上配对,在到达繁殖地后不久,最多在2周内即开始营巢。时间多在4月末至5月初。最佳答案:一般白鹅3、4个月下蛋,开产日龄为五个月。在饲养下,公鹅1.5-2岁开始交配,母鹅2岁多。多于春季开始产卵,每年产卵几十枚到百枚不等。

  • 凌渡多功能方向盘教程(附上详细教程)

    以下内容希望对你有帮助!凌渡多功能方向盘教程内饰部分,可聊的东西相对要少一些,功能区域布局和细节按钮的设计,和高尔夫7几乎如出一辙,像是方向盘、仪表盘、中控部分,都非常模块化,倾斜的中控设计很人性化,整体还是我们熟悉的大众味儿。适度的拉丝金属质感装饰条很好的点缀出了运动感,此外,官方还有木纹装饰可供选择。仪表盘最大的看点在于中央3.5英寸的彩屏,显示的信息非常丰富。

  • ysl日落迷你包包(170607认领品牌1)

    黄子韬经常上身的奢侈品牌YSL来认领小斗篷啦!

  • 智能开关有哪些牌子(十大智能开关品牌有哪些)

    智能开关的排名会直接影响到我们选购智能开关产品。十大智能开关品牌有哪些,相信有很多小伙伴都想知道吧。即使是同一个品牌的智能开关,也会有很多不同的型号以及产品。个人认为在经济能力允许的范围之内,还是选择智能开关比较好。智能开关选购方法3.选择适合的外观智能开关主要分为三种形式,传统开关式,触摸式,液晶触摸式。当前主流的应该是液晶触碰模式的智能开关,外观比较上档次,是不少年轻人的选择。

  • 关于新年的语句幽默(新年的语句幽默怎么写)

    接下来我们就一起去了解一下吧!关于新年的语句幽默新一年,过往不提,一切清零。旁友们再见,俺要回去过年啦。都2022年了,我还是个单身贵族。2022顺心顺利,平安喜乐。跨年一起跨,暴富我自己来。祝贺发财,红包拿来。新的一年年,大家一起白白胖胖。姓卫的,借点钱给我过年。