利用DJANGO管理器实现博客归档功能实例

本文记录了使用Python的Django框架进行博客归档功能的实现过程。通过自定义管理器,实现了按年/月归档并显示每档期的帖子总数。在views.py中创建视图函数,结合urls.py和前端模板完成数据筛选和展示。
摘要由CSDN通过智能技术生成


一、前言

最近在学习Python的DJANGO,想做个留言板(简版博客)练练手,遇到了按月归档的问题,记录下来。
管理器是Django的模型进行数据库查询的接口,Django应用的每个模型都拥有至少一个管理器。默认情况下,Django为每个模型类添加一个名为objects的管理器,然而如果要将objects用于字段名称或想使用其他名称而不是objects来访问管理器,可在每个模型类中重命名他们。自定义的管理器方法可以返回你想要的任何数据,而不需要返回一个查询集。


二、需求

一、归档按年/月进行分类
二、归档分类后要有帖子总数

类似下图:
在这里插入图片描述

三、思路

一、浏览首页(入口)的时候(post_list.html),对应的视图函数def posts_list(request)要对所有帖子进行按年/月进行筛选。
二、筛选后计算帖子的数量。

四、实施

一、在models.py创建模型内归档数据

#models.py
#1. 创建文章管理器,该管理器实现按年-月进行分类文章,该管理器主要针对模型数据【approved_time】进行处理
class ArticleManager(models.Manager):
    def distinct_date(self):  # 该管理器定义了一个distinct_date方法,目的是找出所有的不同日期
        distinct_date_list = []  # 建立一个列表用来存放不同的日期 年-月
        date_list = self.values('approved_time')  # 根据文章字段approved_time找出所有文章的发布时间
        for date in date_list:  # 对所有日期进行遍历,当然这里会有许多日期是重复的,目的就是找出多少种日期
            date = date['approved_time'].strftime('%Y/%m') # 取出一个日期改格式为 ‘xxx年/xxx月 存档’
            if date not in distinct_date_list:
                distinct_date_list.append(date)
        return distinct_date_list


#2. 定义留言板模型数据
class PostMessage(models.Model):
    title = models.CharField(max_length=90,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值