《Django Web应用开发实战》学习笔记 12- CBV(类视图)-日期筛选视图
2020-11-10 23:05
671 查看
学习资料
《Django Web应用开发实战》
1. 日期筛选视图
日期筛选视图是根据模型里的某个日期字段进行数据筛选的,然后将符合结果的数据以一定的形式显示在网页上
2. 月份视图 MonthArchiveView
在index/models.py中修改如下
from django.db import models # Create your models here. class PersonInfo(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=20) age = models.IntegerField() hireDate = models.DateField()
删除migrations db.sqlite3,启动Django项目
执行生成迁移文件命令python manage.py makemigrations
,执行生成数据表命令python manage.py migrate
在index/urls.py中添加下面路由
path('<int:year>/<int:month>.html', views.IndexMonth.as_view(), name='index_month')
在index/views.py添加下面视图
from django.views.generic import MonthArchiveView from index.models import PersonInfo class IndexMonth(MonthArchiveView): allow_empty = True allow_future ad8 = True # 查询的所得数据对象 context_object_name = 'mylist' template_name = 'index.html' model = PersonInfo date_field = 'hireDate' queryset = PersonInfo.objects.all() year_format = '%Y' month_format = '%m' # 分页 paginate_by = 50
templates/index.html修改如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{{ title }}</title> </head> <body> <ul> {% for v in mylist %} <li>{{ v.hireDate }}: {{ v.name }}</li> {% endfor %} </ul> <p> {# 计算上个月的日期 #} {% if previous_month %} Previous Month: {{ previous_month }} {% endif %} <br> {# 计算下个月的日期 #} {% if next_month %} Next Month: {{ next_month }} {% endif %} </p> </body> </html>
启动项目访问效果如下
3. 周期视图 WeekArchiveView
index/urls.py中代码如下
path('<int:year>/<int:week>.html', views.IndexWeek.as_view(), name='index_week')
index/views.py添加如下视图
from django.views.generic import WeekArchiveView from index.models import PersonInfo class IndexWeek(WeekArchiveView): allow_empty = True allow_future = True context_object_name = 'mylist' template_name = 'index.html' model = PersonInfo date_field = 'hireDate' queryset = PersonInfo.objects.all() year_format = '%Y' week_format = '%W' paginate_by = 50
templates/index.html修改如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{{ title }}</title> </head> <body> <ul> {% for v in mylist %} <li>{{ v.hireDate }}: {{ v.name }}</li> {% endfor %} </ul> <p> {% if previous_week %} Previous Week: {{ previous_week }} {% endif %} <br> {% if next_week %} Next Week: {{ next_week }} {% endif %} </p> </body> </html>
启动项目访问效果如下
相关文章推荐
- 李宏毅机器学习——学习笔记(12) Un-supervised Learning-Linear methods
- iOS开发 从下往上弹出提醒视图或日期选择视图等等背景为半透明
- 一步步学习微软InfoPath2010和SP2010--第十三章节--SharePoint视图和仪表板(12)--关键点
- Java基础笔记:Day_12 String类、日期类
- 微信小程序视图层的模板 —— 微信小程序教程系列(12)
- 《TCP/IP详解》学习笔记二(8-12)
- 《机器学习技法》学习笔记12——神经网络
- 2-12-3 日期时间类
- 《大象 Thinking in UML》学习笔记(六)——UML核心视图之静态视图:用例图、类图
- 《大象 Thinking in UML》学习笔记(七)——UML核心视图之动态视图:活动图、时序图
- python学习笔记(12)
- SSM-SpringMVC-12:SpringMVC中BeanNameViewResolver这种视图解析器
- .net视图中日期格式化
- 学习笔记:iOS 视图控制器(UIViewController)剖析
- odoo12 视图使用方式(一)
- 7-12 日期格式化
- 筛选文件修改日期和类型的一个文件小工具
- 《MYSQL入门很简单》学习笔记2——表,索引,视图,触发器
- 以下代码生成的编号长度为12,前6位为日期信息,格式为YYMMDD,后6位为流水号。
- java转换unicode,筛选文件中的insert语句并把日期给转换为可以直接在数据库执行的语句