django Cookie,Session和自定义分页

因为HTTP协议是无状态的,每发送完请求后都会断开链接,所以有时为了保存

状态用到cookie和session

cookie 是保存在浏览器上的,session是保存在后台的

cookie相当于一个口令,从服务端发给客户端的一系列字符串,每次发送请求都带着这个口令

session就是一个大字典,用户发送过来cookie,要和session进行比对,成功则保持状态,cookie存储有限,session还存一些其他私密信息

获取session:

request.session['k1']

request.session.get('k1',None)

设置session

request.session['k1']=123

request.session.setdefault['k1',123]  #存在就不设置

查询session:

request.session.keys()

request.session.values()

request.session.items()

request.sessioon.iterkeys()

request.session.itervalues()

request.session.iteritems()

会将所有Session失效日期小于当前日期的数据删除

request.session.clear_expired()

检查是否存在session的key

request.session.exists('k1')

删除当前会话的所有session数据,客户端的cookie不会删

request.session.delete()

删除当前会话的所有session数据和客户端的cookie

request.session.flush()

设置会话session和cookie的超时时间

request.session.set_expiry(value)

如果value是整数,则在多少秒之后消失

如果value是datatime或者timedelta,session就会在这个时间消失

如果是0,用户关闭浏览器就失效,

如果不设置,或者None,session默认是2周失效

在类中给类方法加函数装饰器,不能直接加,Django内置了一个方法

from django.utils.decorators import method_decorator

然后method_decorator(check_login)

这是直接加在类里get 和post方法之上的

当直接加在类的上面时必须要加上name关键字,method_decorator(check_login,name='get')

补充:CSRF Token相关装饰器在CBV只能加在dispatch方法上

csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。

csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件

 

原文地址:https://www.cnblogs.com/zhaoweihang/p/9229596.html