簡單操作django中session和cookie
cookie
1.會話技術
2.客戶端的會話技術( 資料庫儲存在瀏覽器上)
3.問題導致原因: 在web應用中,一次網路請求是從request開始,到response結束,跟以後的請求或者跟其他請求沒有關係
導致每次請求之間的資料沒有關係 (短連結,長連線:QQ)
解決: 在客戶端保留資料(cookie)或者服務端保留資料(session)來建立關係
4.cookie的使用
1.存
格式: response.set_cookie(key,value)
通過response通知瀏覽器要儲存key,value形式的cookie
示例:
def session_and_cookie(req): req.session['int'] = '正軍' resp = HttpResponse('設定cookie') #可以改成重定向等,但 # 改成重定向的話函式或者類需要寫在檢視view裡面,這與django的請求生命週期有關 resp.set_signed_cookie('uname',json.dumps('凱子')) resp.set_cookie('name','qwertui') resp.set_signed_cookie(View Code'shaxx','biding',salt='shax') #帶簽名的cookie(加鹽) return resp
2. 取
如果瀏覽器保留了cookie,那麼每次請求該伺服器的時候,會自動的攜帶該cookie
格式: request.COOKIES.get(key)
示例:
def get_session_and_cookie(req): data = { 'key':req.session.get('int'),View Code'name':req.COOKIES.get('name'), 'uname':req.COOKIES.get('uname'), 'shaxx':req.get_signed_cookie('shaxx',salt='shax') #獲取帶簽名的cookie(鹽要相同,不然拿不到) } return JsonResponse(data)
3.設定過期時間
預設情況下,關閉瀏覽器cookie就會過期,有時候我們需要設定過期時間:
格式: response.set_cookie(key,value,expires=值)
expires=0 立馬過期
expires=None 用不過期
expires= 值 單位是秒
expires=timedelta(days=值) 表示多少天后過期 hours=值 表示多少小時後過期.....
4.刪除
response.delete_cookie(key)
5.cookie的應用場景:1.儲存賬號,密碼 2.京東的購物車 3.保留使用者的瀏覽資訊 .....
**cookie中文問題: response.set_cookie(key,json.dumps(value)) 即可
注意:設定好cookie之後一定要返回給瀏覽器
cookie原理圖
session
1.會話技術
2.服務端的會話技術
3.需要客戶端的支援才可以
4.使用:
1.存
格式: request.session[key] = value
注意:在django中儲存了一個session後,django會 自動 的生成session key,並將session key與 資料自
動的儲存到 django_session表中去,資料會自動的用base64編碼,並會 自動 的讓瀏覽器的cookie儲存
sessionid(就是sessison key) (在使用session前需要先做資料遷移)
2.取
格式: value = request.session.get(key)
注意: 在django中,會 自動 的將cookie中的sessionid拿出來跟資料庫中的session key匹配,匹配成功後既可以獲取值
3.清除
1.清除對應的cookie
2. del request.session
推薦的:3. request.session.flush() 會清楚對應的cookie及session
5.應用: 使用者登陸認證