在django中保存HTTP_REFERER

时间:2013-09-14 03:32:24

标签: python django

我在Django中有以下代码:

def signup(request)
    http_referer = request.META.get('HTTP_REFERER','/')
    if request.user.is_authenticated():
        return HttpResponseRedirect(reverse('index'))
    else:
        if request.method == 'GET':
            # return HttpResponse(http_referer) Here it returns the right value
            args={}
            return render(request,'signup.html',args)
        elif request.method =='POST':
            # return HttpResponse(http_referer) Here it breaks and returns current url
            ... actual code goes here, but this should be enough

我想保存HTTP_REFERER供以后使用,因为它正在被更改。我已经尝试将其存储在变量中,但不知何故变量仍会自动更改。我想我可以尝试暂时将它存储在数据库中(它可能不会在那里改变),但由于我只需要它在该功能中而且再也不需要它,这似乎是一个糟糕的解决方案。有没有更好的方法呢?

修改

好的,现在我觉得非常愚蠢,因为我意识到我在每个请求上保存http_refererPOST会自动更改它并保存更改),而不是仅保存在{{ 1}}对会话的请求,如下面建议用户:)。

1 个答案:

答案 0 :(得分:0)

也许您可以将http_referer存储在密钥存储中,例如Redis,以获得更强大的解决方案。

或者您可以尝试在会话中添加http_referer,如下所示:request.session ['http_referer_foo'] ='bar'