<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## session [django1.8.2 session官方中文文檔][1] session 是一個抽象概念,開發者為了實現中斷和繼續等操作,將 user agent 和 server 之間一對一的交互,抽象為“會話”,進而衍生出“會話狀態”,也就是 session 的概念。 ### 定義 在WEB開發中,服務器可以為每個用戶瀏覽器創建一個會話對象(session對象),注意:一個瀏覽器獨占一個session對象(默認情況下)。因此,在需要保存用戶數據時,服務器程序可以把用戶數據寫到用戶瀏覽器獨占的session中,當用戶使用瀏覽器訪問其它程序時,其它程序可以從用戶的session中取出該用戶的數據,為用戶服務。 需要注意:**新開的瀏覽器窗口會生成新的Session**,但子窗口除外。子窗口會共用父窗口的Session。例如,在鏈接上右擊,在彈出的快捷菜單中選擇"在新窗口中打開"時,子窗口便可以訪問父窗口的Session。 由于HTTP協議是`無狀態`的協議,所以服務端需要記錄用戶的狀態時,就需要用某種機制來識具體的用戶,這個機制就是Session。典型的場景比如購物車。當你點擊下單按鈕時,由于HTTP協議無狀態,所以并不知道是哪個用戶操作的,所以服務端要為特定的用戶創建了特定的Session,用用于標識這個用戶,并且跟蹤用戶,這樣才知道購物車里面有幾本書。這個Session是保存在服務端的,有一個唯一標識。在服務端保存Session的方法很多,內存、數據庫、文件都有。集群的時候也要考慮Session的轉移,在大型的網站,一般會有專門的Session服務器集群,用來保存用戶會話,這個時候 Session 信息都是放在內存的,使用一些緩存服務比如Memcached之類的來放 Session。 ### 用途 Session可以記錄用戶的`登錄與行為數據`,即記錄下用戶目前訪問服務器上的那些內容,狀態是什么,而考慮到這些數據用戶修改的隨意性很大,并沒有必要直接存儲在數據庫中。 在用戶執行刷新操作時,即再次訪問服務器時,可以直接根據Session,打開用戶上次訪問時網頁的狀態(如用戶輸入的表單內容等等),為用戶帶來更優的體驗,提供個性化服務。 用戶的session信息非常關鍵,它記錄了用戶在進入頁面、查看結果、點擊結果以及后繼的操作(比如翻頁、加購物車等)。只有通過session信息才能把用戶的行為聯系起來,構建出完整的模型,因此從海量數據中把每一個用戶所有session的操作都完整地挖掘出來非常重要。 簡單通俗的講session就是象一個臨時的容器 來存放這些臨時的東西 從你登陸開始就保存在session里 當然你可以自己設置它的有效時間和頁面。舉個簡單的例子 我們做一個購書的JSP網站 顧客買書的時候會挑選出一些書 但是在付錢之前還可以修改,所以不能存到數據庫 就可以先保存在session里 等到確認了以后再放入數據庫 ### session實現方式 cookie實現會話管理 一般只將session的id存儲在cookie中 URL重寫實現會話管理 URL重寫就是將需要記錄的信息附加在請求的鏈接背后,以鏈接參數的形式發送給服務器識別。具體實現的過程會在后文結合cookie詳解。 ### session和cookie的有效時長 session和cookie的有效時長session的有效時長服務器會把長時間沒有活動的Session從服務器內存中清除,此時Session便失效。具體根據服務器設置,一般在二三十分鐘左右。 cookie的有效時長cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用范圍。通過過期時間可以設置cookie的有效時長若不設置過期時間: 表示這個cookie的生命周期為瀏覽器回話期間,關閉訪問服務器的瀏覽器窗口,cookie就消失了。一般稱為回話cookie,保存在內存中若設置了過期時間:則cookie會存儲在硬盤上,直到超過有效時間。 ## 配置和用法 Django中默認支持Session,其內部提供了5種類型的Session供開發者使用: * 數據庫(默認) * 緩存 * 文件 * 緩存+數據庫 * 加密cookie ### 配置 緩存的設置 http://python.usyiyi.cn/translate/django_182/topics/cache.html 在settings.py中 #### 公共部分-默認值 ~~~ 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,默認修改之后才保存 ~~~ #### 不同部分 ~~~ # 數據庫引擎(默認) SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 緩存Session引擎 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' SESSION_CACHE_ALIAS = 'default' # 使用的緩存別名(默認內存緩存,也可以是memcache),此處別名依賴緩存的設置 # 緩存+數據庫Session 引擎 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 文件Session引擎 SESSION_ENGINE = 'django.contrib.sessions.backends.file' SESSION_FILE_PATH = None # 緩存文件路徑,如果為None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir() # 加密cookie Session引擎 SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' ~~~ ### 用法 ~~~ ## 對單個鍵值對操作 # 獲取Session中指定key的值 request.session['key'] request.session.get('key',None) # 設置或者更新key的值 request.session['key'] = 123 # 設置key的值,存在則不設置,相當于設置默認值 request.session.setdefault('key',123) # 刪除指定key的值 del request.session['key'] # 刪除當前用戶的所有Session數據 request.session.delete("session_key") # 清除用戶的sesseion數據,用戶logout request.session.clear() # 獲取用戶session的隨機字符串 request.session.session_key # 將所有Session失效日期小于當前日期的數據刪除 request.session.clear_expired() # 檢查 用戶session的隨機字符串 在數據庫中是否 request.session.exists("session_key") ## 對所有鍵值對操作 request.session.keys() request.session.values() request.session.items() request.session.iterkeys() request.session.itervalues() request.session.iteritems() request.session.set_expiry(value) * 如果value是個整數,session會在些秒數后失效。 * 如果value是個datatime或timedelta,session就會在這個時間后失效。 * 如果value是0,用戶關閉瀏覽器session就會失效。 * 如果value是None,session會依賴全局session失效策略。 ~~~ [1]:http://python.usyiyi.cn/translate/django_182/topics/http/sessions.html
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看