状态保持是什么
Cookie
及Session
一直以来都是Web开发中非常关键的一环,因为HTTP
协议本身为无状态,每一次请求之间没有任何状态信息保持,往往我们的Web服务无法在客户端访问过程中得知用户的一些状态信息,比如是否登录等等;那么这里通过引入Cookie
或者Seesion
来解决这个问题
Cookie
当客户端访问时,服务端会为客户端生成一个Cookie
键值对数据,通过Response
响应给到客户端。当下一次客户端继续访问相同的服务端时,浏览器客户端就会将这个Cookie
值连带发送到服务端
因为cookie
是保存在浏览器中的一个纯明文字符串,所以一般来说服务端在生成cookie
值时不建议存储敏感信息比如密码
获取cookie
设置cookie
class CookieView(View):
def get(self,request):
# 获取cookie信息
cookie_data=request.COOKIES.get(‘shenfen’)
# 进行判断是否有cookie信息
if cookie_data is None:
# 没有则设置
resp = HttpResponse(‘设置cookie’)
resp.set_cookie(‘shenfen’,‘BOOS’)
return resp
else:
# 然后渲染cookie信息
return HttpResponse(f’当前cookie信息为{cookie_data}')
删除cookie
删除cookie
class DelCookieView(View):
# 删除cookie信息
def get(self,request):
resp = HttpResponse(‘删除cookie信息’)
# 删除掉shenfen的信息
resp.delete_cookie(“shenfen”)
return resp
Session
Session
在网络中,又称会话控制,简称会话。用以存储用户访问站点时所需的信息及配置属性。当用户在我们的Web
服务中跳转时,存储在Session
中的数据不会丢失,可以一直在整个会话过程中存活。
获取session
class SessionView(View):
# 覆盖session不存在, 就生成一个session,若存在则返回session信息
def get(self,request):
session_data = request.session.get(‘money’)
if session_data is None:
request.session[‘money’]=‘10000’
return HttpResponse(“设置session”)
else:
return HttpResponse(f’session信息为:{session_data}')
删除session
del request.seesion[Key]
删除对应session,Key值不存在时,引发KeyError
request.session.clear()