欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

程序员文章站 2022-07-12 14:01:29
...

这一节主要做一些修补工作,一个是:文章阅读量的统计,另一个是自动生成文章摘要内容

1 . 文章阅读量的统计:

1 文章阅读量的统计,我们需要在model下的Post类中新加入一个views 字段用来统计文章被阅读的数量,

/blog/models.py

    # 阅读数(>0的数)
    views = models.PositiveIntegerField(default=0)
    # 增加阅读数的方法
    def increase_views(self):
        self.views +=1
        # update_fields 只更新数据库中的views
        self.save(update_fields=['views'])

如图:
Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

解释一下:PositiveIntegerField方法是一个不可能为负数的方法,这里我们默认传入0,
我们又写了一个方法,使得每次调用增加一次views,然后保存到数据库中,这里只进行更新数据库中【‘views’】的字段。

2 ,(修改视图函数)当我们每次访问detail.html即文章详情页的时候,就调用一次increase_views():方法

/blog/views.py

Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

3 , (在模板中显示)在相应的index.html 和detail.html文件中进行数据的显示

/index.html

Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

detail.html

Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

4 , 进行数据库的更新:

python manage.py makemigrations
python manage.py migrate

重新运行一下服务器

Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

2 文章摘要内容的自动生成

1 , 不知道大家还有没有记住excerpt 这个字段,也是存在Post类的字段,这里之前我们没有做任何处理,现在我们稍微做一下处理,

excerpt = models.CharField(max_length=200, blank=True)
在/blog/models.py文件

    # 重写保存的方法
    def save(self,*args,**kwargs):
        # 如果没有摘要,则从body中取一部分
        if not self.excerpt:
            # 实例化md,用于渲染body文本
            md = markdown.Markdown(extensions=[
                'markdown.extensions.extra',
                'markdown.extensions.codehilite',
            ])

            # 将md文本渲染成html
            # strip_tags 去掉html文本的全部html标签
            # 摘取body前54个给excerpt
            self.excerpt = strip_tags(md.convert(self.body))[:54]

        # 调用父类的保存方法保存到数据库中
        super(Post,self).save(*args,**kwargs)

这里的方法是先将md文本渲染成html,用md.convert方法渲染,然后再取前54个给excerpt,最后保存到数据库中

2, 在适当的方法使用模板标签进行引用

/blog/index.html

<div class="entry-content clearfix">
                <p> {{ post.excerpt }}...</p>
                <div class="read-more cl-effect-14">
                    <a href="{{ post.get_absolute_url }}" class="more-link">继续阅读 <span class="meta-nav"></span></a>
                </div>
            </div>

如下图:
Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

我们在后台创建文章,然后不填摘要,就会截取一段文章内容的作为摘要

Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

这样我们就把阅读量统计与文章摘要给做完了,下一节,可能写的比较少,但是理解起来也不容易,用多了也就知道怎么用了。