大家好,这里是Python技术宅的个人官方博客,今天给大家讲一下怎么实现记录文章阅读数的功能,还有就是限制同一个用户频繁刷新造成文章阅读数不断增加的情况,话不多说,我们直接开始吧
实现文章阅读数的思维导图
首先,我们要在Artcile model中添加total_view字段,然后就是定义文章阅读数增加的功能函数,使用文章阅读数增加的功能函数可以直接修改表中的一个字段,而不用执行真个表的操作,比较方便
class Article(models.Model):
......
total_view=models.PositiveIntegerField(default=0,verbose_name='浏览量')
......
def increase_views(self):
self.total_view += 1
self.save(update_fields=['total_view'])
接下来,我们就要在views.py中实现功能,我这里仅仅是针对用户的ip地址进行记录,没有考虑UV的情况,相对有一些不准,不过相信大家可以自行实现:
def article_detail(request, id):
if request.method=='POST':
......
else:
article= Article.objects.get(id=id)
ip = request.META['REMOTE_ADDR']
con=Conn_redis_default()
if not con.sismember(id,ip):
con.sadd(id,ip)
con.expire(id,60*60*24)
article.increase_views()
column=article.column.shortcut
time=str(article.created).split(' ')[0]
return render(request, 'article/detail.html', locals())
from django_redis import get_redis_connection
def Conn_redis_default():
conn = get_redis_connection('default')
return conn
因为redis的集合方法,django_redis默认没有,所以我没有使用cache方法
还要说一下,我是利用redis存储的用户ip,用到了redis的集合,设定了expire时间为24小时,不过安装和使用redis的同学可以浏览下我的另一篇文章,Windows环境下安装redis服务器及客户端并设置服务器自启动,因为我是在本地做的测试,所以用的是windows。
还有就是,redis的使用方法,我这里没有完全吃透,暂时没有redis教程出来,不过大家可以期待一下,因为我计划对整站做缓存处理,会用到redis的,到时候再说。
https://newfasttadalafil.com/ - buying cheap cialis online generic viagra cialis uk Ovlvel Viglhm A stimulus from a muscle produces nerve impulses that travel to the spine. <a href=https://newfasttadalafil.com/>comprar cialis online</a> Ywmtqv Buy Tetracycline 500 Mg For Dogs 79 prix levitra 10 mg posologie https://newfasttadalafil.com/ - Cialis Xwxybs What Does Cephalexin Cure