Django操作cookie
cookie
cookie有时候也写作cookies,关于cookie的内容可以参考cookie与web缓存
Django设置cookie
cookie有服务器端生成,发送给客户端(一般是浏览器)。在Django中设置cookie的方法原型如下所示:
代码语言:javascript复制HttpResponse.set_cookie(key, value=’’, max_age=None, expires=None, path=’/’, domain=None, secure=False, httponly=False, samesite=None)
该函数的参数具体解释可以看这里
cookie是在HTTP头中携带的,但是由于cookie比较特殊,Django提供了特殊的方法来设置cookie。 下面是一个例子:
代码语言:javascript复制def index(request, type, id):
if request.method == "GET":
print(type)
print(id)
response = HttpResponse("OK")
response.set_cookie("cookie1", "123")
return response
else:
return HttpResponse("NO")
使用浏览器请求该方法,如下所示:
可以看到会服务器端生成的cookie会被发送到客户端。
Django更新cookie
由于cookie是键值对,更新cookie的方法也是使用set_cookie方法,如下所示:
代码语言:javascript复制def updatecookie(request):
response = HttpResponse("OK")
response.set_cookie("cookie1", "qwe")
return response
前面我们通过index设置了cookie1的值是123,现在通过更新,将cookie1的值更新为qwe。
使用浏览器请求,效果如下所示:
可以看到cookie1的值更新为了qwe
Django读取cookie
从HTTP协议的角度出发,cookie也是存放在HTTP头中的信息。但是由于cookie是比较特殊的,因此Django将其放在了HttpRequest的COOKIES属性中。
COOKIES属性是一个包含所有 cookies 的字典。键和值都是字符串。例如:
代码语言:javascript复制def getcookie(request):
cookies = request.COOKIES
return JsonResponse(cookies)
请求该接口,如下所示:
Django删除cookie
通过HttpResponse对象中的delete_cookie方法来删除cookie。删除了cookie之后,需要返回给客户端响应,这样客户端才知道删除了cookie,否则客户端的cookie不会被删除。例如:
代码语言:javascript复制def deletecookie(request):
response = HttpResponse("OK")
response.delete_cookie("cookie1")
return response
请求该接口,效果如下: