2023.6.4
WeekArchiveView是在数据表筛选某个日期字段某年某周的所有的数据,总周数是将一年的总天数除以7所得的,数据默认以升序的方式排序显示,年份和周数的筛选范围都是由路由变量提供的
在一年中,无论是平年还是闰年,一共有52周,而且每年同一个周数的日期是各不相同的。如果要对数据表的数据生成周报表,就需要根据当前年份的周数来计算相应的日期范围,这样可以大大降低开发效率。为此,Django提供了视图类WeekArchiveView,只需提供年份和周数即可在数据表里筛选相应的数据信息。整个设计共继承10个类。除了类WeekMixin之外,其他类的属性和方法已详细介绍过了,本小节不再重复讲述,我们只列举类WeekMixin定义的属性和方法,说明如下:
●week_format:由WeekMixin定义,默认值为%U,这是设置周数的计算方式,可选值为%W或%U,如果值为%W,周数就从星期一开始计算,如果值为%U,周数就从星期天开始计算。●week:由WeekMixin定义,设置默认周数,如果没有设置属性值,就从路由变量week里获取。
●get_week_format():由WeekMixin定义,获取属性week_format的值。
●get_week():由WeekMixin定义,获取属性week的值。
●get_next_week():由WeekMixin定义,调用_get_next_week()来获取下一周的开始日期。●get_previous_week():由WeekMixin定义,获取上一周的开始日期。
●_get_next_week():由WeekMixin定义的受保护方法,返回下一周的开始日期。●_get_current_week():由WeekMixin定义的受保护方法,返回属性week所设周数的开始日期。
●_get_weekday():由WeekMixin定义的受保护方法,获取属性week所设周数的工作日。
路由index定义路由变量year和week,它们只能支持整型的数据格式,并且变量名是固定的,否则视图类WeekArchiveView无法从路由变量里获取年份和周数。
视图类index继承父类WeekArchiveView,它共设置了10个属性,每个属性的设置与其他视图类index大致相同,唯独将属性month_format改为week_format
模板文件index.html的模板上下文也与视图类MonthArchiveView提供的模板上下文相似,只不过上一周和下一周的上下文改为previous_week和next_week。综上所述,视图类WeekArchiveView和MonthArchiveView在使用上存在相似之处
综上所述,视图类WeekArchiveView和MonthArchiveView在使用上存在相似之处,也就是说数据表index_personinfo的大部分数据集中在2018年9月,这个日期的周数为38。运行MyDjango项目,在浏览器上访问127.0.0.1:8000/2018/38.html,
标签:week,周期,WeekArchiveView,get,周数,视图,WeekMixin,定义 From: https://blog.51cto.com/576642026/6410016