Django操作session 的方法
session是存放在服務(wù)端的,在django中使用session必須要先在數(shù)據(jù)庫中創(chuàng)建django_session表,session相關(guān)信息都要依賴此表
獲取session
request.session['status']
request.session.get('status')#一般用get,無此鍵返回None不報錯
設(shè)置session
#在使用session之前必須在數(shù)據(jù)庫創(chuàng)建相關(guān)的表(django_session)
#調(diào)用request.session首先會接收請求頭部的cookie是否有sessionid,進行表查詢對比
#如果有重新生成一個sessionid進行覆蓋更新記錄,并將隨機生成的sessionid添加到cookie返回前端
# 沒有則新建存進表中的session_key,同時將字典信息加密自動存進表中的session_data字段
request.session['status']=True # 存在自動覆蓋
request.session.setdefault('k1',123) # 存在則不設(shè)置
刪除session
request.session.flush()#刪除服務(wù)端的session,刪除當前的會話數(shù)據(jù)并刪除會話的Cookie。
request.session.clear_expired()# 將所有Session失效日期小于當前日期的數(shù)據(jù)刪除,將過期的刪除
del request.session['k1']#django-session表里面同步刪除
request.session.delete()# 刪除當前會話的所有Session數(shù)據(jù)
更多session操作
# 所有 鍵、值、鍵值對
request.session.keys()
request.session.values()
request.session.items()
#獲取sessionid的值
session_key = request.session.session_key
#檢查會話session的key在數(shù)據(jù)庫中是否存在
request.session.exists("session_key") #session_key就是那個sessionid的值
# 設(shè)置會話Session和Cookie的超時時間
request.session.set_expiry(value)
* 如果value是個整數(shù),session會在些秒數(shù)后失效。
* 如果value是個datatime或timedelta,session就會在這個時間后失效。
* 如果value是0,用戶關(guān)閉瀏覽器session就會失效。
* 如果value是None,session會依賴全局session失效策略。
Session詳細流程解析

Django中的Session配置
Django中默認支持Session,其內(nèi)部提供了5種類型的Session供開發(fā)者使用。
1. 數(shù)據(jù)庫Session
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默認)
2. 緩存Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 SESSION_CACHE_ALIAS = 'default' # 使用的緩存別名(默認內(nèi)存緩存,也可以是memcache),此處別名依賴緩存的設(shè)置
3. 文件Session
SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 SESSION_FILE_PATH = None # 緩存文件路徑,如果為None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir()
4. 緩存+數(shù)據(jù)庫
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎
5. 加密Cookie Session
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎
其他公用設(shè)置項:
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 # 是否關(guān)閉瀏覽器使得Session過期(默認) SESSION_SAVE_EVERY_REQUEST = False # 是否每次請求都保存Session,默認修改之后才保存(默認)
總結(jié)
到此這篇關(guān)于Django操作session 的方法的文章就介紹到這了,更多相關(guān)django操作session 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch中關(guān)于F.normalize計算理解
這篇文章主要介紹了Pytorch中關(guān)于F.normalize計算理解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
pytorch Dataset,DataLoader產(chǎn)生自定義的訓(xùn)練數(shù)據(jù)案例
這篇文章主要介紹了pytorch Dataset, DataLoader產(chǎn)生自定義的訓(xùn)練數(shù)據(jù)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
解決Django 在ForeignKey中出現(xiàn) non-nullable field錯誤的問題
今天小編就為大家分享一篇解決Django 在ForeignKey中出現(xiàn) non-nullable field錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python用matplotlib庫畫圖中文和負號顯示為方框的問題解決
matplotlib中畫圖的時候會遇到負號顯示為方框的問題,下面這篇文章主要給大家介紹了關(guān)于Python用matplotlib庫畫圖中文和負號顯示為方框的問題解決,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07
python處理 yaml 時保持輸入輸出格式一致的問題記錄
這篇文章主要介紹了python處理 yaml 時保持輸入輸出格式一致的問題記錄,要想保持順序不變在dump時添加sort_keys=False,使yaml格式保持原來的排序,本文給大家介紹的非常詳細,需要的朋友可以參考下2024-06-06

