基于django的视频点播网站开发-step14-数据总览功能
数据总览功能,是对网站中产生的数据进行一个统计,统计出视频数、发布数、用户数、评论数,等等。让管理者对网站数据有一个清晰的认识,做到心中有数。
在本站中,笔者一共列举了下面几种数据:视频数、发布中
未发布、用户数、用户新增、评论数、评论新增,等几项内容。
我们把所有的数据都封装到了一个函数里面,即 IndexView 它位于后台管理的首页。
path('', views.IndexView.as_view(), name='index'),
IndexView代码如下
class IndexView(AdminUserRequiredMixin, generic.View): def get(self, request): video_count = Video.objects.get_count() video_has_published_count = Video.objects.get_published_count() video_not_published_count = Video.objects.get_not_published_count() user_count = User.objects.count() user_today_count = User.objects.exclude(date_joined__lt=datetime.date.today()).count() comment_count = Comment.objects.get_count() comment_today_count = Comment.objects.get_today_count() data = {"video_count": video_count, "video_has_published_count": video_has_published_count, "video_not_published_count": video_not_published_count, "user_count": user_count, "user_today_count": user_today_count, "comment_count": comment_count, "comment_today_count": comment_today_count} return render(self.request, 'myadmin/index.html', data)
与视频相关的统计,我们封装到了Video的models.py下面,
class VideoQuerySet(models.query.QuerySet): # 视频总数 def get_count(self): return self.count() # 发布数 def get_published_count(self): return self.filter(status=0).count() # 未发布数 def get_not_published_count(self): return self.filter(status=1).count()
以上数据,大都使用了filter过滤器进行了过滤,最后通过count()函数返回给业务方。
与用户相关的统计,我们直接通过count和exclude将相关数据过滤出来。
与评论相关的统计,封装到了Comment的models.py下面,
class CommentQuerySet(models.query.QuerySet): # 评论总数 def get_count(self): return self.count() # 今日新增 def get_today_count(self): return self.exclude(timestamp__lt=datetime.date.today()).count()
其中,今日新增评论,我们通过exclude来过滤时间,使用了 lt 标签来过滤。更多标签的使用方法,可参考 官方文档

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java和Node.js实战 MongoDB 4.x 新特性:Change Streams 变化流
作者:Dj Walker-Morgan译者:徐雷原文地址:https://www.mongodb.com/blog/post/five-minute-mongodb--change-streams-and-mongodb-4x 监控数据库发生的变化是MongoDB同步数据服务的关键。我们不需要去定期轮训查询集合中的更改文档,我们就可以可以更轻松地过滤Change Streams 变化流,并立即采取处理错误。这是一种Reactive反应式编程风格,可以非常强大。如今,获取这些变更信息流非常简单。 *译者注:关于Reactive编程,Java提供了Reactive模型支持,阿里Java专家杜万老师,在阿里Java钉钉群中提供了讲座和资料。 先介绍点历史知识。在MongoDB 3.6之前,如果我们要监听MongoDB中正在发生的变化,必须“tail the oplog”,跟踪操作日志,这是一个用于复制记录变更的集合。 “tail the oplog”的过程往往最终会出现复杂的问题,不受支持的,脆弱的代码,而这些代码在生产中存在风险,难以控制,并不是我们想要的。这意味着人们会避免使用React...
- 下一篇
基于django的视频点播网站开发-step15-项目部署
项目部署是一个比较大的工程,但这是笔者最喜欢的一个环节,因为在部署过程中,会遇到很多疑难问题,这些问题能促使我学到很多很多的技术。 项目部署,顾名思义,就是将自己的程序存放到远程服务器上面,让全世界的网友都能访问到。在部署之前,我们需要提前准备好一些部署的知识,包括购买服务器、安装服务器软件、服务器配置、等等。 笔者专门购买了服务器来部署我们的视频播放网站,为了避免备案,笔者购买了国外的服务器。 购买服务器 购买服务器的地方有很多,国内有阿里云、腾讯云、百度云等,国外有aws、bwh、Linode等等。如果你是学生的话,建议购买 阿里云 的服务器,因为阿里云有学生认证,打折幅度非常大。 操作系统建议选择ubuntu系统 笔者购买的是aws服务器,操作系统是Ubuntu16.04 安装软件 需要安装的软件有nginx、mysql、python、uwsgi、django,另外还有项目的依赖库。 在Ubuntu系统安装nginx非常简单,只需一行命令 sudo apt-get install nginx nginx的常用命令有 sudo service nginx start # 启动ngi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7安装Docker,走上虚拟化容器引擎之路