Django中的Cookie的使用,设置,删除,过期时间,设置有效路径等

Django中Cookie的使用

1. 设置Cookie

1.1 设置Cookie及其过期时间

设置Cookie,我们需要在Django的HttpResponse中设置

设置Cookie方法 /set_cookie/?user=用户名

def set_cookie(request):
	"""
		定义一个设置cookie函数
		用户GET请求传入表单的user值,将作为cookie的name值
	"""
    user = request.GET.get('user')
    max_age = 60
    response = HttpResponse(f'{user}登录成功,有效时间:{max_age}秒.')
    response.set_cookie('name', user, max_age=max_age)  # 单位秒
    return response

通过浏览器工具可以看到Cookie设置成功,并且有效时间60秒

在这里插入图片描述

1.1 设置Cookie (set_cookie)的其他参数

  1. key (必需):
    • 类型:字符串
    • 作用:指定要设置的 Cookie 的名称。
  2. value (可选):
    • 类型:字符串
    • 默认值:空字符串 ""
    • 作用:指定要设置的 Cookie 的值。
  3. max_age (可选):
    • 类型:整数或 None
    • 默认值:None
    • 作用:指定 Cookie 的最大生存时间,单位为秒。如果设置了 max_age,则表示 Cookie 会在指定的秒数后过期。如果为 None,表示不设置最大生存时间,Cookie 在浏览器会话结束时过期。
  4. expires (可选):
    • 类型:日期时间对象或 None
    • 默认值:None
    • 作用:指定 Cookie 的过期日期时间。如果设置了 expires,则表示 Cookie 会在指定的日期时间后过期。如果为 None,表示不设置过期日期时间,Cookie 在浏览器会话结束时过期。
  5. path (可选):
    • 类型:字符串
    • 默认值:"/"
    • 作用:指定 Cookie 在哪个路径下可见。例如,设置 path="/foo/" 表示该 Cookie 只在 “/foo/” 路径下可见。
  6. domain (可选):
    • 类型:字符串
    • 默认值:None
    • 作用:指定 Cookie 在哪个域名下可见。例如,设置 domain=".example.com" 表示该 Cookie 在所有子域名下可见。
  7. secure (可选):
    • 类型:布尔值
    • 默认值:False
    • 作用:设置为 True 表示该 Cookie 只能通过 HTTPS 连接传输。
  8. httponly (可选):
    • 类型:布尔值
    • 默认值:False
    • 作用:设置为 True 表示该 Cookie 仅限于 HTTP 请求,JavaScript 无法访问。
  9. samesite (可选):
    • 类型:字符串或 None
    • 默认值:None
    • 作用:指定 Cookie 的 SameSite 属性,用于控制跨站点请求时是否发送 Cookie。可选值为 “lax”、“strict” 或 None。“lax” 表示仅在顶级导航时发送,“strict” 表示在所有跨站点请求时都不发送。
#### 设置一个2023年12月31号过期的Cookie,并且设置其只能/book/中有效

def set_cookie(request):
    user = request.GET.get('user')
    end_time = datetime.datetime(year=2023,month=12,day=31)  # 使用datetime对象
    response = HttpResponse(f'{user}登录成功,有效日期截至:{end_time.strftime("%d/%m/%Y, %H:%M:%S")}')
    response.set_cookie('name', user, expires=end_time,path='/book')  # 直接传入datetime对象
    # 这里定义了path='/book',那Cookie就只会在book及其子域名下有效
    return response

已经设置成功,此时我们访问两个网站一个是 /get_cookie 一个是 /book/get_cookie

**访问/get_cookie (非book下的) **

在这里插入图片描述

可以发现,Cookie并没有生效,因为我们只设置了/book/路径以下的

我们再来访问/book/get_cookie

在这里插入图片描述

发现Cookie是正常的

2. 更新以及删除Cookie

2.1 更新Cookie

其实更新Cookie和直接设置是一样的

response = HttpResponse("更新Cookie")
response.set_cookie("cookie", "这里直接更新新的Cookie就行")

2.2 删除Cookie

2.2.1 方法1

删除cookie,我们可以调用HttpResponse对象的delete_cookie()

def del_cookie(request):
    rep = HttpResponse("删除Cookie")
    rep.delete_cookie('name') # 删除cookie中的name字段
    return rep

2.2.2 方法2

既然Cookie能设置过期时间,也就是说Cookie过期了,就失效了,那就等同于删除

所以,我们也可以直接将Cookie的有效期,设置成0,那么Cookie直接失效,也就等于删除了

def del_cookie(request):
    rep = HttpResponse("删除Cookie")
    rep.set_cookie('name','',max_age=0) # 直接设置有效时间0,等同于删除
    return rep

e(request):
rep = HttpResponse(“删除Cookie”)
rep.set_cookie(‘name’,‘’,max_age=0) # 直接设置有效时间0,等同于删除
return rep


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值