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

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

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

幸运地是,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级庄园升级条件(是三围6.4和550w库存资源)

    逆水寒8级庄园升级条件是三围6.550w库存资源冲八级要先在6级把三围堆够至少5.5w,这样升七之后升级所有产业就可以达到升八的三围,今天小编就来说说关于逆水寒8级庄园升级条件?下面更多详细答案一起来看看吧!逆水寒8级庄园升级条件逆水寒8级庄园升级条件是三围6.550w库存资源。550w库存资源不够,升到八级会什么也不能做,再攒攒资源吧,把仓库上限先存满。

  • 西北和陕北的区别(苏南与苏北陕南与陕北)

    苏南与苏北,陕南与陕北,两个省的南北差异在哪里?大家都有所了解,江苏分为苏南和苏北,陕西分为陕南与陕北,那为何这样划分呢?在这里,只是指苏南会比苏北优越。陕南人民憨厚,勤劳朴实陕南民歌也因此而显得旋律优美。陕北属温带大陆性半干旱气候,与陕南有很大不同。陕北经济较陕南强的不是一点,陕北经济全省占比65%,工业、煤矿业较多,陕北的煤炭在全国都是数一数二的,还有盐、天然气、石油等等。

  • 唐代诗人的别称都有哪些(唐代诗人别称四)

    白居易上疏请急捕贼,朝中宰相认为白居易踰越朝臣份际,面对朝臣的攻讦,白居易背负莫大的罪名,遭贬江州司马,黯然离京,悲愤悒郁。因为过去的教训,白居易采取明哲保身、随遇而安的处世态度,但仍在职责范围内协助百姓改善生活。据说离开杭州时,白居易把官俸留在州库,作为公家缓急之需。主人下马客在船,举酒欲饮无管弦。沉吟放拨插弦中,整顿衣裳起敛容。今年欢笑复明年,秋月春风等闲度。世称"刘随州"。

  • 镇江市老房翻新案例(用极致服务赢得好口碑)

    腿脚不便的鲍阿姨,坚持将自己用心制作的锦旗,亲自送到了美凯龙家装天津河东门店,屡次表示这一次装修“省心又省力,完全超出心理预期”。鲍阿姨家所在的小区,是美凯龙家装开发立项的重点小区。主材和家具都是鲍阿姨在红星美凯龙商场自选的,经由天津河东团队出面与各大品牌谈价,整体为鲍阿姨节省了20%的费用。

  • 世界十大女星模特(人体模特汤加丽)

    随后,更是因为觉得汤加丽丢脸,直接和汤加丽断绝了父女关系。而汤加丽的丈夫沈东,也表示无法接受这样的汤加丽,于是提出了和汤加丽离婚。就这样,汤加丽被自己父母,又送到了专业的体操学校。然而汤加丽的丈夫对此一无所知,只知道自己的妻子每天忙于工作,早出晚归。

  • 傲慢与偏见名言(傲慢与偏见金句)

    译本封面1.有钱的单身汉总要娶位太太,这是一条举世公认的真理。双方的脾气即使彼此非常熟悉,或者非常相似,也不会给双方增添丝毫的幸福。我们不能指望一个生龙活虎的青年会始终谨言慎行。女人对爱情抱有不切实际的幻想。

  • 糙米健脾养胃(糙米助消化薏米好养颜)

    作为日常食用米,粳米含有人体必需的淀粉、蛋白质、脂肪、维生素b1、烟酸、维生素c及钙、铁等营养成分,可以提供人体所需的营养、热量。米糠层的粗纤维分子有助于胃肠蠕动,对胃病、便秘、痔疮等消化道疾病有效。糙米较之精白米更有营养,能降低胆固醇,减少心脏病发作和中风的几率。谷万里指出,由于小米性稍偏凉,气滞者和体质偏虚寒、小便清长者不宜过多食用。养颜的是薏米薏米又称薏仁米、苡米。

  • 智能平衡车使用方法教学(智能平衡车使用技巧教学)

    以下内容大家不妨参考一二希望能帮到您!智能平衡车使用方法教学提示音后,抬起一只脚轻踏在踏板中央;车体处于平衡状态后,迅速踏上另一只脚。身体回到直立状态或重心轻微向后。减速后根据转向需要控制身体左右小幅度倾斜。减速停车,保持车辆基本静止,单脚向后迈下车,另一只脚迅速离开脚踏板。

  • 野韭菜籽的功效与作用 韭菜籽的功效

    野韭菜籽就是植物野韭菜的种子,是一种黑色的颗粒状物质,它营养价值很高,保健功效也很出色,平时能用于人类一些常见的病的预防与治疗,功效特别明显,那么野韭菜籽的功效与作用有哪些呢?想具体了解可以看看下面小编对野韭菜籽的具体介绍。