一、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值。