Django操作cookie

2021-11-02 16:45:10 浏览数 (1)

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

请求该接口,效果如下:

0 人点赞