session源码
session源码
1, 导入
from django.contrib.sessions.middleware import SessionMiddleware
sessionMiddleware 下的__init__
SESSION_ENGINE
2,找SESSION_ENGINE 项目sessions.py配置文件里没有该值
3,到父类中找SESSION_ENGINE
4,
5,继续往上找,找到global_settings
6,SESSION_ENGINE默认写入django的sessions表里,我们也可以自己配置, 写入其他表,缓存,文件中。
知识点: from django.conf import settings
settings.A --- > 用户下的settings找变量A,如果找不到 --- > global_settings里找
7,import_module(settins.SESSION_ENGINE)
知识点:
import views
import_module "views"
SessionStore
8, settings.py
9, self.SessionStore是一个类名字
SessionMiddleware 下的process_request
SESSION_COOKIE_NAME
10, 接下来继续往下走process_request
11, SESSION_COOKIE_NAME = "sessionid"
13,取COOKIES里面没有sesionid这个值
session_key = get 方法如果取不到就是None,如果有值的话,就是随机字符串
request.session 就是一个类对象
db > SessionStore > SessionBase
14,
15.
16,json类型序列化的格式
进入gloabl_settings
17,
class A(object): x=1 a=A() print(a.x) # 1 a.y=3 print(a.y) # 3
18.
19,
_session
20, 赋值,还为save保存到数据库中。
# 知识点 # 方式1 obj = Userinfo.objects.create(username="alex") # 方式2 obj = Userinfo[username="alex"] obj.save()
21,
SessionMiddleware下的process_response
is_empty
1,
from django.contrib.sessions.middleware import SessionMiddleware
2, is_empty = false
3,
4,
5,