• 该弄懂的知识拖再久也躲不掉


    django session 原理剖析

    用户自定义settings的权限大于globalsetting 

    在经过中间件 'django.contrib.sessions.middleware.SessionMiddleware',以后

    代码运行至SessionMiddleware类

    实例化出self.SessionStore = engine.SessionStore

    在request视图中

    def process_request(self, request):

    session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME)
    request.session = self.SessionStore(session_key)

    session_key取到session的随机字符串或者None

    request.seesion 是将一个类

    SessionStore的实例化对象

    作为request的属性  session

    故此得到  request.session是一个实例化的对象

    self._session_key = session_key
    self.accessed = False
    self.modified = False
    self.serializer = import_string(settings.SESSION_SERIALIZER)

    那么在视图中  我们request.session['user_id']=user.pk究竟发生了什么呢

    1.走__setitem__方法

    self._session[key] = value
    self.modified = True
    两个赋值,其中最关键的是__session[key]


    如果同一个浏览器 session_key 存在 则不会产生新的 key
    如果用赋值的键值对发生改变那么
    session Value 会改变

    sessionkey sessionvalue request.session['key'] 登录人
    xpntaar5q7fwbeq83ov10qwa4h7mh2vc 初始值 初始值 初始值
    不变 不变
    不变 不变
    如果使用auther模块退出会删除整条session      
    不变 不变
    如果是自己的删除session操作del request.session[''user_id]      
    不变    
           


















  • 相关阅读:
    2019暑假——区域赛真题讲解
    2019暑假杭电训练赛(补题及笔记)
    2019暑假牛客训练赛(补题及笔记)
    网络流——最大流-Dinic算法
    SPFA
    K短路(A*+SPFA)
    从业务架构视角聊聊大型商业银行的转型实践
    互联网 40 岁失业是一个无法打破的魔咒吗
    Hadoop集群中出现的节点有哪些作用
    CDH集群的角色划分
  • 原文地址:https://www.cnblogs.com/zjchao/p/8516008.html
Copyright © 2020-2023  润新知