一般来说,我们如何知道用户是否是第一次访问该页面?从技术上讲,我们是否将每个页面的访问次数存储在模型中(我正在使用 django),或者是否有其他模式可以遵循以简化操作。
我只是在寻找实现这一点的设计。
一般来说,我们如何知道用户是否是第一次访问该页面?从技术上讲,我们是否将每个页面的访问次数存储在模型中(我正在使用 django),或者是否有其他模式可以遵循以简化操作。
我只是在寻找实现这一点的设计。
我认为您必须为此创建自己的机制。
我会创建一个模型来存储每个 url 和名为 eg 的用户的首次访问FirstVisit
。然后,如果用户请求视图中的页面,您可以搜索当前用户和 url 是否有条目,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()
您可以创建一个装饰器并将此功能放入其中。然后将装饰器添加到您要存储此信息的任何视图中,并从装饰器将标志参数传递给视图,以确定用户是否第一次在那里。
根据@davekr 的建议,我将创建一个像 FirstVisit 这样的模型,它具有一些属性,如 ip-address、时间注册,并在 get 方法(与根 url 绑定)上实例化它,并在用户有效或经过身份验证时进行一些验证。
PS:检查此(https://docs.djangoproject.com/en/2.0/ref/request-response/)django文档以识别您可能对构建 FirstVisit 感兴趣的请求属性。