我知道使用referrer = self.request.META.get('HTTP_REFERER')
可以找到上一页引荐来源链接,但是我需要再往前走一步,例如:referrer = self.request.META.get('HTTP_REFERER', -2)
?
答案 0 :(得分:0)
除非您实现一些Session management以便在用户浏览会话期间存储用户引用历史记录,否则这是不可能的。
可以这样通过custom Middleware来实现:
1。在请求进入时获取当前用户会话。
2。将当前引荐来源网址添加到会话列表中。
session = request.session
referer = request.META.get("HTTP_REFERER")
if "referers" in session:
session["referers"] = [referer]
else:
session["referers"] = [referer] + session["referers"]
3。在您的视图中,访问request.session["referers"]
属性。
if request.session["referers"] and len(request.session["referers"]) > 1:
print(request.session["referers"][1])
else:
print("Less than 1 referer")
我不会详细介绍实现Django的会话存储或自定义中间件,因为这需要更多代码,因此您将需要从文档中了解如何使用Django的中间件和会话存储。特别是,您需要决定如何存储会话(如果已经有了数据库,数据库是一个简单的解决方案),并且可能需要对中间件的顺序进行故障排除,因为Django在其自己的中间件中初始化了会话管理器,因此必须在访问会话之前执行。
这可能比您预期的要多,但是您需要将先前的引荐来源保存在某个地方并能够跟踪用户会话。
祝你好运。
答案 1 :(得分:0)
从this的答案中得到启发,如果您只需要返回两页,则可以这样做:
return HttpResponse('<script>history.go(-2);</script>')
请记住,这不会重新加载页面。