django python:引荐来源网址可返回后两页

时间:2018-07-20 06:40:20

标签: python django referrer

我知道使用referrer = self.request.META.get('HTTP_REFERER')可以找到上一页引荐来源链接,但是我需要再往前走一步,例如:referrer = self.request.META.get('HTTP_REFERER', -2)

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>')

请记住,这不会重新加载页面。