一般情况下,我们如何知道用户是否第一次访问该页面?从技术上讲,我们是否存储了模型中每个页面的访问次数(我使用的是django),或者是否有一些其他模式可以帮助您简化操作。
我正在寻找实现此目的的设计。
答案 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可能需要的请求属性。