科百科
当前位置: 首页 范文大全

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/

译者:张新英

    推荐阅读
  • 手机北斗导航怎么用(北斗导航具体指的是什么)

    以下内容希望对你有帮助!手机北斗导航怎么用打开北斗导航,在上方搜索栏中搜索自己想要找到的地点,在下拉菜单里点击,在地点的右方有两个选项,点击第1个,会出现地点的详细信息。点击第2个,显示的是移动到地点的路线。北斗卫星导航系统是中国着眼于国家安全和经济社会发展需要,自主建设、独立运行的卫星导航系统,是为全球用户提供全天候、全天时、高精度的定位、导航和授时服务的国家重要空间基础设施。

  • 宝莲灯叶子锈斑如何处理 宝莲灯锈斑病

    宝莲灯叶子锈斑后,需要立马将发病的部分剪除,并换掉原来的盆土,对植株进行喷药治疗,防治病虫害的蔓延。宝莲灯叶子锈斑也有可能是温度低造成的,需要采取保温措施。可以将宝莲灯得病的部位剪下并及时销毁,防止病株导致植株出现再次传染,还要及时更换盆土,尽量不要选用未腐熟的肥料,进行对宝莲灯的施肥工作,这样能减少菌源,减少病害的发生。

  • 湖南湖北的湖指的是?(湖南湖北的湖是什么)

    湖南湖北的湖指的是湖南湖北的湖是指“洞庭湖”,古称云梦、九江和重湖,处于长江中游荆江南岸,跨岳阳、汩罗、湘阴、望城、益阳、沅江、汉寿、常德、津市、安乡和南县等县市。洞庭湖北纳长江的松滋、太平、藕池、调弦四口来水,南和西接湘、资、沅、澧四水及汨罗江等小支流,由岳阳市城陵矶注入长江。两者合计,仍有3879.2平方公里。湖盆周长为803.2公里,总容积220亿立方米,其中天然湖泊容积178亿立方米,河道容积42亿立方米。

  • 孕妇正确吃鹅蛋的方法(孕妇正确吃鹅蛋的方法和做法)

    孕妇在怀孕期间应该多吃一些高营养的食材,这样既能满足母体代谢需要也能促进腹中胎儿发育,鹅蛋就是女性怀孕期间最应该吃一种高营养食材,它能让女性身体吸收丰富蛋白质和大量的磷脂还以去除胎毒促进胎儿大脑发育。孕妇在怀孕期间吃不大还能吸收丰富维生素a和维生素e更能吸收丰富的硫胺素和尼克酸,这些物质对维持女性身体健康也有很大好处,而且能满足胎儿发育时对不同营养的需要,对胎儿畸型有良好预防作用。

  • 我本无意穿堂风偏偏孤倨引山洪出自哪里 我本无意穿堂风偏偏孤倨引山洪这句话出自哪里

    3、这句话的意思是:你从我身边走过,犹如过堂风一样的自然,你却不知道你随性的走过,可我心里却犹如翻江倒海一般,一发不可收拾。

  • 防震减灾心得(防震减灾心得体会如何写)

    防震减灾心得地震灾害是世界上造成经济损失最严重和人员伤亡最多的自然灾害之一。在百货公司、地下通道等人员较多的地方,最可怕的是发生混乱。在发生地震、火灾时,不能使用电梯。避难时要徒步,携带物品应在最少限度。因地震造成的火灾,蔓延燃烧,出现危及生命、人身安全等情形时,采取避难的措施。为防止混乱,每个人依据正确的信息,冷静地采取行动,极为重要。

  • 2022年法考咋报名(2022年法考6月16日起报名)

    司法部发布2022年国家统一法律职业资格考试公告,明确客观题考试网上报名时间为6月16日至6月30日,考试时间为9月17日、18日;主观题考试时间为10月16日。关于各地报名具体事项,由报名地司法行政机关在报名前向社会发布公告。应试人员参加考试,应当遵守考区所在地有关新冠肺炎疫情防控工作规定,自觉配合做好疫情防控工作。

  • 椰子巧妙吃法(椰子不只是可以喝汁)

    椰子鸡:食材:童子鸡半只、椰汁500g、椰肉:50g、清水200g、红枣、姜片做法:1、先把椰汁倒出来,倒的时候会有少许杂质掉进去,所以要用纱布过滤一遍。一道美味又营养的椰子鸡就做好了,喝第一口的时候有点复杂,再多喝几口就欲罢不能了,真的是太美味了。

  • 国货补水精华排行榜前十名(盘点好用的国货精华)

    特别加入皮傲宁成分,瓦解粉刺内物质,加速皮肤内粉刺废物排出,避免严重痘印残留。另有三款酸类成分辅助,加速角质代谢,改善皮肤角化问题。另外精华水中加入了PCA锌,能够有效抑制皮肤油脂过量分泌,调节皮肤表面油光症状。其中主要活性成分南瓜发酵提取物,多重营养元素对于皮肤表层微生物菌群有一定的调节效果,皮肤微生物屏障持续稳定。另外拥有缓释包裹水杨酸,作用解决肌肤角质问题,改善皮肤粉刺闭口症状。