栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django学习之旅(八)自动生成文章摘要

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django学习之旅(八)自动生成文章摘要

博客参考追梦人物老师教程,记录学习过程。

通过截取博客正文内容的前50个字符自动生成一段摘要:

  1. 在视图函数中覆写save方法
  2. 直接在模板中进行内容截取
视图函数中覆写save方法

模型的save方法用于保存数据到数据库中,通过覆写save方法可以在保存数据前做一些小的操作。
post类的save方法中添加

from django.utils.html import strip_tags
# markdown渲染对象
        md = markdown.Markdown(extensions=[
            'markdown.extensions.extra',
            'markdown.extensions.codehilite',
        ])
        # md.covert()用于将markdown转换为html,strip_tags用于去掉html的标签,然后取前50个字符为摘要。
        # 注意:self.body本身默认是用markdown语法写的
        self.abstract = strip_tags(md.convert(self.body))[:50]

其中md对象用于将markdown文本渲染为html文本,注意博客的正文body默认是markdown语法写的。
strip_tags函数用于去除html内容中的标签,最后取前50个字符作为模型的摘要。
完整的save函数变为:

    def save(self, *args, **kwargs):
        self.modified_time = timezone.now()
        # markdown渲染对象
        md = markdown.Markdown(extensions=[
            'markdown.extensions.extra',
            'markdown.extensions.codehilite',
        ])
        # md.covert()用于将markdown转换为html,strip_tags用于去掉html的标签,然后取前50个字符为摘要。
        # 注意:self.body本身默认是用markdown语法写的
        self.abstract = strip_tags(md.convert(self.body))[:50]
        super().save(*args, **kwargs)

需要注意的是,save函数要保存数据时才会触发。

模板过滤器

模板中形似{{ var | filter: arg }}的内容称为模板过滤器,类似于一个函数,它对变量var进行处理得到想要的结果。
truncatechars模板过滤器:可以对变量进行截取
因此第二种摘要生成方法直接在模板中对正文进行截取

 

{{ post.body|truncatechars:54 }}

对变量post.body进行截取前54个字符,作为摘要。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号