Django做一个简单的博客系统(9)----统计文章浏览量

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42567323/article/details/102724147
前言

    文章浏览量几乎存在于所有的社交网站,所有这篇文章就来实现一个简单的统计文章浏览量功能.
    感谢大神的教程:Django搭建个人博客.

一.统计文章浏览量

1.模型

    首先为文章数据表增加一个字段用于存储文章浏览量:
article/models.py:

class ArticlePost(models.Model):
	...
    # 文章浏览量,初始值为0
    total_views = models.PositiveIntegerField(default=0)
	...

    新增加一个total_views字段来存储文章浏览量.
    别忘了进行数据迁移:

python manager.py makemigrations
python manager.py migrate

2.修改模板

    在模板中增加一个浏览量:
templates/article/list.html:

<div class="card-footer">
    <!-- 已有代码 -->
    <a href="{% url 'article:article_detail' article.id %}"
        class="btn btn-primary">
        阅读本文
    </a>

	<!-- 这里是新增加的部分 -->
    <!-- 显示浏览量 -->
    <span>
        <small class="col align-self-end" style="color: gray;">
            浏览: {{ article.total_views }}
        </small>
    </span>

</div>

    修改页面详情模板:
templates/article/detail.html:

<!-- 文章详情 -->
<div class="container">
    <div class="row">
        ...
        <div class="col-12 alert alert-success">
            <div>
                作者:{{ article.author }}
                {% if user == article.author %}
                    · <a href="#" onclick="confirm_delete()">删除文章</a>
                    · <a href="{% url "article:article_update" article.id %}">
                        编辑文章
                    </a>
                {% endif %}
            </div>
            <div>
                浏览:{{ article.total_views }}
            </div>
        </div>
        ...
</div>

修改内容有:

  • 确认当前登录用户是文章的作者,才显示“删除文章、“编辑文章”两个链接
  • 显示浏览量

3.修改视图函数

    修改article_detail()
article/views.py:

def article_detail(request, id):
    article = ArticlePost.objects.get(id=id)

    # 浏览量 +1
    article.total_views += 1
    article.save(update_fields=['total_views'])
    ...

    简单的设置浏览量+1.
    修改article_update()更新文章的视图:
article/views.py:

# 提醒用户登录
@login_required(login_url='/userprofile/login/')
def article_update(request, id):
    # 已有代码
    article = ArticlePost.objects.get(id=id)

    # 过滤非作者的用户
    if request.user != article.author:
        return HttpResponse("抱歉,你无权修改这篇文章。")
    ...

写在最后

    本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.

猜你喜欢

转载自blog.csdn.net/weixin_42567323/article/details/102724147