1. 程式人生 > 其它 >在DJango中session的使用方法

在DJango中session的使用方法

技術標籤:Django3python3

Django中預設支援Session,其內部提供了5種類型的Session供開發者使用:

·資料庫(預設)
  ·快取
  ·檔案
  ·快取+資料庫
  ·加密cookie

(1)資料庫中的Session

Django預設支援Session,並且預設是將Session資料儲存在資料庫中,即:django_session 表中。

a. 配置 settings.py

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,預設修改之後才儲存(預設)

b. 使用

def index(request):
    # 獲取、設定、刪除Session中資料
    request.session['k1']
    request.session.get('k1',None)
    request.session['k1'] = 123
    request.session.setdefault('k1',123) # 存在則不設定
    del request.session['k1']

    # 所有 鍵、值、鍵值對
    request.session.keys()
    request.session.values()
    request.session.items()
    request.session.iterkeys()
    request.session.itervalues()
    request.session.iteritems()


    # 使用者session的隨機字串
    request.session.session_key

    # 將所有Session失效日期小於當前日期的資料刪除
    request.session.clear_expired()

    # 檢查 使用者session的隨機字串 在資料庫中是否
    request.session.exists("session_key")

    # 刪除當前使用者的所有Session資料
    request.session.delete("session_key")
    request.session.clear()

    request.session.set_expiry(value)
        * 如果value是個整數,session會在些秒數後失效。
        * 如果value是個datatime或timedelta,session就會在這個時間後失效。
        * 如果value是0,使用者關閉瀏覽器session就會失效。
        * 如果value是None,session會依賴全域性session失效策略。