一、cookie简介
1.cookie就是保存在浏览器端的键值对。
2.服务端可以去编写存放在浏览器端的cookie。
3.客户端每次访问服务器请求的时候,都会携带cookie到服务端。
4.cookie会被放在请求头
二、如何在django中操作cookie?
1.从request 请求对象中的cookie里通过指定的key来获取相应的值。
test = request.COOKIES.get('key1') #获取cookie中key1这个key所对应的值。
下面是一个简单的应用示例:
def login(request):
c_user = request.COOKIES.get('username')
if not c_user:
return redirect('/login/')
#如果没有从浏览器响应头中得到username对应的value,那么直接跳转回登录页面。
2.cookie回写。
if request.method == "GET":
return render(request,'login.html')
else:
user = request.POST.get('username')
pwd = request.POST.get('password')
if user == 'admin' and pwd =='admin':
obj = redirect('/admin/')
obj.set_cookie('username','xxxx') ###为浏览器回写cookie!!key为username 对应的value为xxx。
return obj
else:
return render(request,'login.html')
3.设置cookie声明周期。
如果想在回写cookie时,可以给cookie加一个超时时间,就可以使用max_age参数。
例如:
obj.set_cookie('username','xxxx',max_age=10) ###为浏览器回写cookie!!key为username 对应的value为xxx,并且cookie的声明周期为10秒,10秒后自动消失。
4.设置cookie作用域。
如果需要设置cookie的作用域,可以通过response的set_cookie中的path参数去进行设置。
path='/' #代表对整个站点生效。
path='/p1' #代表对www.xxxx.com/p1/*站点生效。
还可以通过domain参数来设置,这个cookie对哪个域名生效。
默认为当前域名。
5.安全相关参数。
secure= False #默认值为False ,也就是关闭状态,当使用https时,需要开启。
httponly = False #默认值为False ,默认也是关闭状态,如果开启了httponly,那么这个cookie只能在http请求传输的时候可以被读取,
js是无法读取这个cookie的。
6.cookie的简单签名。
通过response回写cookie时。
obj.set_signed_cookie('kkk','vvv',salt='123456') #通过加盐的方式为cookie签名。
request.get_signed_cookie('kkk',salt='123456') #获取经过签名后的cookie值。
本文转自苏浩智 51CTO博客,原文链接:http://blog.51cto.com/suhaozhi/2063468,如需转载请自行联系原作者