36.Django中设置获取和删除cookie

Posted 孤寒者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了36.Django中设置获取和删除cookie相关的知识,希望对你有一定的参考价值。

引言——我们都知道HTTP(超文本传输协议)是一个无状态的协议。
那么客户端和服务器都是怎么记录登录的状态的呢——也就是怎么维持登录的呢?
(比如:你在浏览器中登录过了爱奇艺账号,哪怕你网页关闭了,只要时间不长,你再次登录的话会发现不用输入账号就已经是登录状态了!)

什么是cookie:

简单介绍一下什么是cookie,客户端浏览器上的一个文件,以键值对进行保存,类似字典{‘k’:‘v’},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当客户端游览器下次访问服务器端时候,会带着这个保存了的cookie访问服务器,服务器端收到请求后,经过检查此cookie已存在此随机字符串,表示此客户端为已通过认证的状态,可以直接登录。

更详细的讲解——《一篇万字博文带你入坑爬虫这条不归路(你还在犹豫什么&抓紧上车) 【❤️熬夜整理&建议收藏❤️】》

这就使用到了浏览器中的cookie:

比如——登录了CSDN之后,按如图操作你就可以看到CSDN在你本地浏览器中存储的cookie信息!


使用Django在服务器中设置cookie及获取删除cookie:

import datetime
def set(request):
    response = HttpResponse('设置cookie')
    #response.set_cookie('name', 'xiaoming ')   # 默认关闭浏览器则过期
    #response.set_cookie('name', 'xiaoming', max_age=100)  # 100s后过期
    response.set_cookie('name', 'xiaoming', expires=datetime.datetime(2020,10,1))  # 指定过期时间
    return response

def get(request):
    cookie = request.COOKIES
    print(cookie.get('name'))
    return HttpResponse('获取cookie')

def delete(request):
    rs = HttpResponse('删除cookie')
    rs.delete_cookie('name')
    return rs

注意:

  1. 设置cookie值以及删除cookie值都是response对象的操作,而获取cookie是从requeset相应中获得的。
  2. 虽然cookie可以保存状态但注意不要存储敏感信息。

以上是关于36.Django中设置获取和删除cookie的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cakephp 3.5 中设置和获取 Cookie

Yii2-设置和获取删除Cookies空值分析(有代码)

如何在 WordPress 中设置、获取和销毁 cookie?

在 doFilter 中设置后获取 Cookie

如何在 ApplicationController 中设置 cookie?

如何在php中设置cookie,在js中获取