【发布时间】:2019-08-05 23:15:42
【问题描述】:
我想做以下事情:每次用户输入一篇文章,都会增加访问次数+1,但只是用户第一次登录,所以我必须保存用户已经输入的事实页面在某个地方。但我没有使用身份验证或类似的东西。
我知道我可以使用 javascript 在 LocalStorage 中存储,但我仍然不知道如何在后端使用 APIS。
在后端执行此操作的最简单方法是什么?
目前递增的函数如下。注意:我创建了一个新对象而不是使用“instance.visits + = 1”之类的东西,因为我需要保存每次访问的日期以过滤在特定时间段内访问次数更多的帖子,这是唯一的方法我明白了。
class ArticlePage(Page):
# ....
def serve(self, request, *args, **kwargs):
request.is_preview = getattr(request, 'is_preview', False)
self.views.create(date=datetime.datetime.now())
self.save()
print(self.views.all().count())
return TemplateResponse(
request,
self.get_template(request, *args, **kwargs),
self.get_context(request, *args, **kwargs)
)
class ArticlePageViews(models.Model):
article = models.ForeignKey(
ArticlePage,
on_delete=models.CASCADE,
related_name='views'
)
date = models.DateTimeField()
def __str__(self):
return f'{self.date}'
【问题讨论】:
-
你想只统计登录用户或任何用户的浏览量吗?
-
@Pedro 任何用户,如果它只是登录用户,将其存储在数据库中会容易得多。
-
只在用户浏览器中存储 cookie。所以如果 coockie 存在,他已经第一次访问了 else