📜  django 中的 cookie - Python (1)

📅  最后修改于: 2023-12-03 14:40:46.733000             🧑  作者: Mango

Django 中的 Cookie

在 Web 开发中,Cookie 是一种在用户计算机中存储信息的机制,它可以使服务器在浏览器中存储和检索用户的数据。在 Django 中使用 Cookie 并不难,在视图函数中直接使用 request.COOKIES 字典就可以获取 Cookie 内容;如果需要设置 Cookie,则可以使用 HttpResponseRedirect 对象及 set_cookie 函数。

设置 Cookie

可以使用 django.http.HttpResponseRedirect 对象来设置 Cookie。HttpResponseRedirect 对象继承自 HttpResponse 对象,所以可以调用 set_cookie 函数。

from django.http import HttpResponseRedirect

def my_view(request):
    response = HttpResponseRedirect('/redirected/')
    response.set_cookie('cookie_name', 'cookie_value')
    return response
获取 Cookie

要获取 Cookie 值,可以使用 request.COOKIES 字典。以前面的例子为例,可以在重定向后的方法中如下获取 Cookie 值。

def redirected(request):
    cookie_value = request.COOKIES.get('cookie_name')
    # ... do something with the value

需要注意的是,COOKIES 字典中可以包含来自浏览器的所有 Cookie,不仅仅是自己在代码中设置的 Cookie。

设置 Cookie 过期时间

可以使用 set_cookie 方法的 expires 参数设置 Cookie 的过期时间。expires 可以是 datetime.datetime 类型或字符串类型。

from datetime import datetime, timedelta
expires = datetime.now() + timedelta(days=2)
response.set_cookie('cookie_name', 'cookie_value', expires=expires)
删除 Cookie

可以通过设置 Cookie 的 max_age 参数为 0 来删除 Cookie,也可以使用 del 操作符来删除 COOKIE 字典中的某个键值对。

response.set_cookie('cookie_name', 'cookie_value', max_age=0)
del request.COOKIES['cookie_name']