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
- 2
補充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,默認修改之后才保存(默認)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
補充2
如何把Django的session放到redis數據庫中
直接使用django-redis-session庫
1⃣️ pip install django-redis-sessions
2⃣️ 配置:
- 1
- 2
- 3
- 4
- 5
- 6
SESSION_ENGINE = 'redis_sessions.session' SESSION_REDIS = { 'host': 'localhost', 'port': 6379, 'db': 0, 'password': 'password', 'prefix': 'session', 'socket_timeout': 1 }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
補充3
如何把緩存設置成redis:
CACHES = {
"default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }