1. 原理流程图

后端session有效期 session 后端_后端session有效期

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')