django session配置
不作任何配置可能有以下错误
django.db.utils.ProgrammingError: (1146, "Table 'test.django_session' doesn't exist")
1.make migrate
2.C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python manage.py createsuperuser
3.页面取值:{{request.session.cnt}}
https://docs.djangoproject.com/en/dev/topics/http/sessions/#configuring-the-session-engine
4.如存修改session设置如:
1)保存到缓存中
在 settings.py 中增加 SESSION_ENGINE 配置。
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
仅会话级保存,当缓存满时会删掉一部分数据,且服务器重启时数据将清空。
2)缓存数据库同时存储,先从session中找,找不到时从数据库中找。
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
3)保存到文件中
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
# 建议配置
SESSION_FILE_PATH = BASE_DIR+'\\xxx'
不配置见各系统临时文档的存储位置,linux下注意授权
C:\Users\Administrator\AppData\Local\Temp
。。。
session取值时会报错:
return self._session[key]
KeyError: 'cnt'
cnt=request.session.setdefault("cnt",0)
如果出现QueryDict' object is not callable
有可能是[],()之类取值语法错误
4)保存到cookie中
。这种方案适用于对数据保密性不严格的场景。
SESSION_ENGINE = 'jango.contrib.sessions.backends.signed_cookies'
# 建议配置,阻止 javascript 对会话数据的访问,提高安全性。
SESSION_COOKIE_HTTPONLY= True
5.可选配置
# Session的cookie保存在浏览器上时的key
SESSION_COOKIE_NAME = "sessionid"
# Session的cookie保存的路径
SESSION_COOKIE_PATH = "/"
# Session的cookie保存的域名
SESSION_COOKIE_DOMAIN = None
# 是否Https传输cookie
SESSION_COOKIE_SECURE = False
# 是否Session的cookie只支持http传输
SESSION_COOKIE_HTTPONLY = True
# Session的cookie失效日期(秒值)
SESSION_COOKIE_AGE = 3600
# 是否关闭浏览器使得Session过期
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
# 是否每次请求都保存Session,默认修改之后才保存
SESSION_SAVE_EVERY_REQUEST = False