最新的开发版本中的session修改

原来,想实现一个记住我的功能时,需要修改django的代码,因为session中间件对处理记录sessonid的cookie过期时间是写死的。在最新的开发版中,对session对象添加了几个有用的方法,set_expiry(),这个方法根据接受的参数的不同的有不同的效果。

在一般情况下,站点默认使用cookie关闭浏览即取消,当使用记住我的时候,cookie则在某个时间内取消。

首先,需要把SESSION_EXPIRE_AT_BROWSER_CLOSE = True

然后,写个装饰器:

def remember_me(view_func):
    def _dec(request, *args, **kwargs):
        if request.POST.get(‘rme’) == ‘1’:
            request.session.set_expiry(request.session.get_expiry_age())
        return view_func(request, *args, **kwargs)
    return _dec

其中rme是记住我的表单项,对django.contrib.auth.views.login使用这个装饰器,呵呵这样就在不用修改login代码的情况下添加了记住我的功能。

分享到: 更多