django中session的存儲位置


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
  • 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", } } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM