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庫
1⃣️ pip install django-redis-sessions
2⃣️ 配置:
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",
}
}
}