如何检查用户是否第一次访问该页面

时间:2013-03-29 08:41:01

标签: django design-patterns django-models

一般情况下,我们如何知道用户是否第一次访问该页面?从技术上讲,我们是否存储了模型中每个页面的访问次数(我使用的是django),或者是否有一些其他模式可以帮助您简化操作。

我正在寻找实现此目的的设计。

2 个答案:

答案 0 :(得分:4)

我认为你必须为此创建自己的机制。

我会为每个网址和名为FirstVisit的用户创建一个存储首次访问的模型。然后,如果用户在视图中请求页面,您可以搜索FirstVisit中是否存在当前用户和网址的条目,并查明是否是他的第一次。之后,如果他尚未访问,则将条目存储到FirstVisit模型,因为他只是要获取页面的内容。

我会尝试编写代码:

#models.py

class FirstVisit(models.Model):
    url = models.URLField()
    user = models.ForeignKey('auth.User')


#views.py

def my_view(request):
   if not FisrtVisit.objects.filter(user=request.user.id, url=request.path).exists():
      #he visits for the first time
      #your code...
      FisrtVisit(user=request.user, url=request.path).save()

你可以创建一个装饰器并放入这个功能。然后将装饰器添加到要存储此信息的任何视图中,并从装饰器中将标志参数传递给视图,以确定用户是否第一次在那里。

答案 1 :(得分:0)

按照@davekr的建议,我将创建一个具有诸如FirstVisit之类的模型,该模型具有ip-address,注册时间等一些属性,并将其实例化到get方法(绑定到根url)上,并通过验证进行验证(如果用户有效或无效)。已验证。

PS:选中此(https://docs.djangoproject.com/en/2.0/ref/request-response/)django文档,以识别构建FirstVisit可能需要的请求属性。