Django中默認(rèn)支持Session紊册,其內(nèi)部提供了5種類型的Session供開(kāi)發(fā)者使用:
數(shù)據(jù)庫(kù)(默認(rèn))
緩存
文件
緩存+數(shù)據(jù)庫(kù)
加密cookie
1工窍、數(shù)據(jù)庫(kù)Session
Django默認(rèn)支持Session,并且默認(rèn)是將Session數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中吮龄,即:django_session 表中值桩。
a. 配置 settings.py
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默認(rèn))
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在瀏覽器上時(shí)的key挺物,即:sessionid=隨機(jī)字符串(默認(rèn))
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路徑(默認(rèn))
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默認(rèn))
SESSION_COOKIE_SECURE = False # 是否Https傳輸cookie(默認(rèn))
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http傳輸(默認(rèn))
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默認(rèn))
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否關(guān)閉瀏覽器使得Session過(guò)期(默認(rèn))
SESSION_SAVE_EVERY_REQUEST = False # 是否每次請(qǐng)求都保存Session,默認(rèn)修改之后才保存(默認(rèn))
b. 使用
def index(request):
# 獲取纺棺、設(shè)置榄笙、刪除Session中數(shù)據(jù)
request.session['k1']
request.session.get('k1',None)
request.session['k1'] = 123
request.session.setdefault('k1',123) # 存在則不設(shè)置
del request.session['k1']
# 所有 鍵、值祷蝌、鍵值對(duì)
request.session.keys()
request.session.values()
request.session.items()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems()
# 用戶session的隨機(jī)字符串
request.session.session_key
# 將所有Session失效日期小于當(dāng)前日期的數(shù)據(jù)刪除
request.session.clear_expired()
# 檢查 用戶session的隨機(jī)字符串 在數(shù)據(jù)庫(kù)中是否
request.session.exists("session_key")
# 刪除當(dāng)前用戶的所有Session數(shù)據(jù)
request.session.delete("session_key")
request.session.clear()
request.session.set_expiry(value)
* 如果value是個(gè)整數(shù)茅撞,session會(huì)在些秒數(shù)后失效。
* 如果value是個(gè)datatime或timedelta巨朦,session就會(huì)在這個(gè)時(shí)間后失效乡翅。
* 如果value是0,用戶關(guān)閉瀏覽器session就會(huì)失效。
* 如果value是None,session會(huì)依賴全局session失效策略罪郊。