http被設計為」無狀態」,每次請求都處於相同的空間中。 在一次請求和下一次請求之間沒有任何狀態保持,我們無法根據請求的任何方面(ip位址,使用者**等)來識別來自同一人的連續請求。上圖很明顯的展示了django的session與cookie的實現原理。伺服器會生成兩份相同的cookie字串,乙份儲存在本地,乙份發向請求的瀏覽器。瀏覽器將收到的cookie字串儲存下來,當下次再發請求時,會將資訊與這段cookie一同傳送到伺服器,伺服器得到這段cookie會與本地儲存的那份判斷是否相同,如果相同就表示使用者已經登入成功,儲存使用者登入成功的狀態。django的session儲存在資料庫中的資料相當於乙個大字典,key為cookie的字串,value仍是乙個字典,字典的key和value為使用者設定的相關資訊。這樣就可以方便的訪問session裡面的資訊。
django的session機制會向請求的瀏覽器傳送cookie字串。同時也會儲存到本地乙份,用來驗證瀏覽器登入是否為同一使用者。它存在於伺服器,django缺省會把session存入到資料庫中。
session依賴於cookie,如果瀏覽器不能儲存cooki那麼session就失效了。因為它需要瀏覽器的cooki值去session裡做對比。session就是用來在伺服器端儲存使用者的會話狀態。
#把獲取表單的使用者名稱傳遞給session物件
req.session['
username
'] =username
req.session[
'password
'] = password
#獲得session的資料
username = req.session.get('
username
','anybody
')
password = req.session.get('
password
','')
#還有一點,在django處理請求的過程中,需要經過中介軟體的過濾,涉及到跨站請求偽造時,django會把請求阻止過濾掉,所以我們要在setting.py中禁用跨站請求偽造的中介軟體,如果不禁用,記得好像會報乙個403的錯誤黃頁。刪除session
del req.session['
username
']
cookie可以有過期時間,這樣瀏覽器就知道什麼時候可以刪除cookie了。 如果cookie沒有設定過期時間,當使用者關閉瀏覽器的時候,cookie就自動過期了。 你可以改變session_expire_at_browser_close的設定來控制session框架的這一行為。預設情況下, session_expire_at_browser_close 設定為 false ,這樣,會話cookie可以在使用者瀏覽器中保持有效達session_cookie_age秒(預設設定是兩周,即1,209,600 秒)。 如果你不想使用者每次開啟瀏覽器都必須重新登陸的話,用這個引數來幫你。如果 session_expire_at_browser_close 設定為 true ,當瀏覽器關閉時,django會使cookie失效。
session_cookie_age:設定cookie在瀏覽器中存活的時間
在settings.py中新增:
Django session相關操作 redis
設定session11 request.session username chen 12 設定過期時間13 request.session.set expiry 30 14 返回json字串 15return httpresponse 首頁 161718 deflogin request 19if ...
Django session登陸並獲取值的例項
1 使用session登陸,那麼就說明大家登入註冊都可以實現。那就直接寫seesion的教程 2 在views.py登陸註冊已經實現,那麼就往session裡面新增資料 user request.session name name 3 views.py的登陸檢視 登陸模組 def login req...
使用GraphEdit使用
1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....