1. 原理流程图
2. 代码实现
views.py文件
masage = """
保存在服务器的数据叫做 session
session需要依赖于cookie
如果浏览器禁用了cookie,则session不能实现
再去执行set_session,会重新生成session_id
不换浏览器,删除session_id,则获取不到session数据
0.概念
1.流程
第一次请求:
① 我们第一次请求的时候可以携带一些信息(用户名/密码) cookie中没有任何信息
② 当我们的服务器接收到这个请求之后,进行用户名和密码的验证,验证没有问题可以设置session信息
③ 在设置session信息的同时(session信息保存在服务器端).服务器会在响应头中设置一个 sessionid 的cookie信息(由服务器自己设置的,不是我们设置的)
④ 客户端(浏览器)在接收到响应之后,会将cookie信息保存起来(保存 sessionid的信息)
第二次及其之后的请求:
⑤ 第二次及其之后的请求都会携带 session id信息
⑥ 当服务器接收到这个请求之后,会获取到sessionid信息,然后进行验证,
验证成功,则可以获取 session信息(session信息保存在服务器端)
2.效果
3.从原理(http)角度
第一次请求:
① 第一次请求,在请求头中没有携带任何cookie信息
② 我们在设置session的时候,session会做2件事.
#第一件: 将数据保存在数据库中
#第二件: 设置一个cookie信息,这个cookie信息是以 sessionid为key value为 xxxxx
cookie肯定会以响应的形式在相应头中出现
第二次及其之后的:
③ 都会携带 cookie信息,特别是 sessionid
"""
def set_session(request):
# 1.cookie中没有任何信息
print(request.COOKIES)
# 2.对用户名和密码进行验证
# 假设认为 用户名和密码正确
user_id = 66666
# 3.设置session信息
# 设置session的时候其实 session做了2件事
# 第一件: 将数据保存在数据库中
# 第二件: 设置一个cookie信息,这个cookie信息是以sessionid为key
request.session['user_id'] = user_id
# 4. 返回响应
return HttpResponse('set_session')
def get_session(request):
# 1.请求都会携带sessionid信息
print(request.COOKIES)
# 2. 会获取到sessionid信息,然后进行验证
# 验证成功,可以获取 session信息(
# request.session 字典
user_id1 = request.session['user_id']
user_id2 = request.session.get('user_id')
# 3.返回响应
return HttpResponse('get_session')