Django保存HTTP_REFERER以将其用作登陆页信息

时间:2012-02-13 15:00:01

标签: python django cookies http-headers http-referer

我想知道是否有更好的解决方案。

我正在建立的网站有一些表格,需要有关用户开始他的'journy'页面的信息。现在我将HTTP_REFERER保存到会话中,稍后再使用它。 缺点是需要set_expiry(0)来清除浏览器关闭时的会话。我喜欢用户每次关闭浏览器时都不需要登录的行为。

我写了一个看起来像这样的小中间件类:

class RefererMiddleware(object):
    def process_response(self, request, response):
        try:
            if not request.session.get('http_landingpage'):
                request.session['http_landingpage'] = request.META.get('HTTP_REFERER')
                request.session.set_expiry(0)
        except Exception:
            pass
        return response

有任何改进建议吗?其他解决方案?

1 个答案:

答案 0 :(得分:1)

setting a cookie怎么样,它将在浏览器关闭时到期。您可以在中间件中执行此操作,最后会话将保持不变。

#Usage: response.set_cookie( 'cookie_name', 'cookie_value' )

class RefererMiddleware(object):
    def process_response(self, request, response):
        if not request.COOKIES.has_key( 'HTTP_REFERER' ):
            response.set_cookie( 'HTTP_REFERER', request.META.get('HTTP_REFERER') )
        return response