版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
前言
文章浏览量几乎存在于所有的社交网站,所有这篇文章就来实现一个简单的统计文章浏览量功能.
感谢大神的教程: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("抱歉,你无权修改这篇文章。")
...
写在最后
本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.