django-session的存放位置-01-21

django-session 存放位置

設置session的保存位置,有三種方法:

  1. 保存在關係數據庫(db)
  2. 保存在緩存數據庫(cache) 或者 關係+緩存數據庫(cache_db)
  3. 保存在文件系統中(file)

第一種

保存在數據庫中:需要在 INSTALL_APPS 中添加:django.contrib.sessions(默認創建項目的時候添加),然後,遷移一下

第二種

保存在緩存中

  1. 只保存在cache中
    注:Django默認配置

    SESSION_ENGINE = ‘django.contrib.sessions.backends.db’

    修改爲:

    SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’

    有可能因內存溢出而導致找不到

  2. 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",
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章