django-session 存放位置
設置session的保存位置,有三種方法:
- 保存在關系數據庫(db)
- 保存在緩存數據庫(cache) 或者 關系+緩存數據庫(cache_db)
保存在文件系統中(file)
第一種
保存在數據庫中:需要在 INSTALL_APPS 中添加:django.contrib.sessions(默認創建項目的時候添加),然后,遷移一下
第二種
保存在緩存中
只保存在cache中?
注:Django默認配置
SESSION_ENGINE = ‘django.contrib.sessions.backends.db’
修改為:
SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’
有可能因內存溢出而導致找不到
db和cache都保存,查找的時候先取cache中查找,找不到再轉到db中查找
修改為:?
SESSION_ENGINE = ‘django.contrib.sessions.backends.cache_db’?
更安全,推薦
第三種
保存在文件系統中:
配置:
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
SESSION_FILE_PATH = 'xxx' # 文件位置(確保有權限,Django默認是系統的臨時文件目錄tempfile.gettempdir())
補充1
a. 配置 settings.py 關于session的默認配置SESSION_ENGINE = 'django.contrib.sessions.backends.db' ? # 引擎(默認)SESSION_COOKIE_NAME = "sessionid" ? ? ? ? ? ? ? ? ? ? ? # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認)
SESSION_COOKIE_PATH = "/" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # Session的cookie保存的路徑(默認)
SESSION_COOKIE_DOMAIN = None ? ? ? ? ? ? ? ? ? ? ? ? ? ? # Session的cookie保存的域名(默認)
SESSION_COOKIE_SECURE = False ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 是否Https傳輸cookie(默認)
SESSION_COOKIE_HTTPONLY = True ? ? ? ? ? ? ? ? ? ? ? ? ? # 是否Session的cookie只支持http傳輸(默認)
SESSION_COOKIE_AGE = 1209600 ? ? ? ? ? ? ? ? ? ? ? ? ? ? # Session的cookie失效日期(2周)(默認)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False ? ? ? ? ? ? ? ? ?# 是否關閉瀏覽器使得Session過期(默認)
SESSION_SAVE_EVERY_REQUEST = False ? ? ? ? ? ? ? ? ? ? ? # 是否每次請求都保存Session,默認修改之后才保存(默認)
補充2
如何把Django的session放到redis數據庫中
直接使用django-redis-session庫
pip install django-redis-sessions
配置:
SESSION_ENGINE = 'redis_sessions.session'SESSION_REDIS = {'host': 'localhost','port': 6379,'db': 0,'password': 'password','prefix': 'session','socket_timeout': 1}
補充3
如何把緩存設置成redis:
CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/0","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}
}
?