亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Django 5種類型Session

發布時間:2020-07-29 11:38:05 來源:億速云 閱讀:140 作者:小豬 欄目:開發技術

這篇文章主要為大家展示了如何使用Django 5種類型Session,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

介紹

Session:在計算機中,尤其是在網絡應用中,稱為“會話控制”。Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。

當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄后,服務器將終止該會話。Session 對象最常見的一個用法就是存儲用戶的首選項。

session是基于cookie完成的,當用戶打開瀏覽器,去訪問服務器的時候,服務器會為每個用戶的瀏覽器創建一個會話對象(session對象),并且為每個session對象創建一個Jsessionid號。當session對象創建成功后,會以cookie的方式將這個Jsessionid號回寫給瀏覽器,當用戶再次進行訪問服務器時,及帶了具有Jsessionid號的cookie數據來一起訪問服務器,服務器通過不同session的 Jsessionid號來找出與其相關聯的session對象,通過不同的session對象來為不同的用戶服務。

使用

Django中默認支持Session,其內部提供了5種類型的Session供開發者使用:

  • 數據庫(默認)
  • 緩存
  • 文件
  • 緩存+數據庫
  • 加密cookie
     

數據庫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()
     # 3.0無下面3個方法
    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.delete()
    request.session.flush()
 
    request.session.set_expiry(value)
      * 如果value是個整數,session會在些秒數后失效。
      * 如果value是個datatime或timedelta,session就會在這個時間后失效。
      * 如果value是0,用戶關閉瀏覽器session就會失效。
      * 如果value是None,session會依賴全局session失效策略。

緩存Session

a. 配置 settings.py

SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
SESSION_CACHE_ALIAS = 'default' # 使用的緩存別名(默認內存緩存,也可以是memcache),此處別名依賴緩存的設置
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. 使用

同上

文件Session

a. 配置 settings.py

SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎
SESSION_FILE_PATH = None # 緩存文件路徑,如果為None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir() #

如:/var/folders/d3/j9tj0gz93dg06bmwxmhh7_xm0000gn/T

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. 使用

同上

緩存+數據庫Session

數據庫用于做持久化,緩存用于提高效率

a. 配置 settings.py

SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎

b. 使用

同上

加密cookie Session

a. 配置 settings.py

SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎

b. 使用

同上

登錄狀態驗證

def login_status(func):
  def warp(request,*args,**kwargs):
    user = request.session.get("username")
    if user:
      kwargs["username"] = user
      return func(request,*args,**kwargs)
    return redirect(login)
  return warp

以上就是關于如何使用Django 5種類型Session的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

顺昌县| 改则县| 台前县| 云安县| 江陵县| 昌平区| 双柏县| 瑞安市| 盐池县| 周口市| 龙口市| 德令哈市| 安西县| 佳木斯市| 汝城县| 陕西省| 图木舒克市| 邵东县| 蒙自县| 宝鸡市| 大姚县| 且末县| 堆龙德庆县| 宝应县| 宝坻区| 广平县| 沙田区| 荣昌县| 上林县| 肥东县| 喀喇沁旗| 当雄县| 普宁市| 平乡县| 台南县| 景洪市| 扬中市| 宽城| 鞍山市| 黑水县| 宜兰县|