python web后端开发篇之session后端逻辑

https://blog.csdn.net/weixin_45912307/article/details/110410321

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')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值