Django中Cookie 和 Session
阿新 • • 發佈:2018-01-25
登錄 been close rip response 獲取cookie default rect dex
Django中操作Cookie
Cookie 就是保存在瀏覽器端的鍵值對
1. 服務端可以在瀏覽器上設置COOKIE 保存在瀏覽器上的
2. 每次請求會攜帶COOKIE
3. Cookie是有效時間的
4. 可以用來做登錄或其他事情
獲取Cookie
request.COOKIES[‘key‘] request.get_signed_cookie(key, default=RAISE_ERROR, salt=‘‘, max_age=None)
參數:
- default: 默認值
- salt: 加密鹽
- max_age: 後臺控制過期時間
設置Cookie
rep = HttpResponse(...) rep = render(request, ...) rep.set_cookie(key,value,...) rep.set_signed_cookie(key,value,salt=‘加密鹽‘,...)
參數:
- key, 鍵
- value=‘‘, 值
- max_age=None, 超時時間
- expires=None, 超時時間(IE requires expires, so set it if hasn‘t been already.)
- path=‘/‘, Cookie生效的路徑,/ 表示根路徑,特殊的:根路徑的cookie可以被任何url的頁面訪問
- domain=None, Cookie生效的域名
- secure=False, https傳輸
- httponly=False 只能http協議傳輸,無法被JavaScript獲取(不是絕對,底層抓包可以獲取到也可以被覆蓋)
刪除Cookie
def logout(request): rep = redirect("/login/") rep.delete_cookie("user") # 刪除用戶瀏覽器上之前設置的usercookie值 return rep
Cookie版登陸校驗
# 登錄 def login(request):登錄校驗if request.method=="POST": name=request.POST.get("name") pwd=request.POST.get("pwd") if name=="cao" and pwd=="123": rep=redirect("/index1/") # rep.set_cookie("name",name) # 加鹽 # rep.set_signed_cookie("name",name ,salt="nidaye # 設置時間,時間一到自動跳轉到登錄頁面 # rep.set_signed_cookie("name",name,salt="nidaye",max_age=10) #path=‘/‘, Cookie生效的路徑,/ 表示根路徑,特殊的:根路徑的cookie可以被任何url的頁面訪問 rep.set_signed_cookie("name1", name, salt="nidaye", max_age=100,path="/index1/") return rep return render(request,"login.html") def index1(request): # name=request.COOKIES.get("name") # 加鹽的 # name=request.get_signed_cookie("name",None,salt="nidaye") # 時間一到,name取不到值則跳轉到登錄頁面 name = request.get_signed_cookie("name1", None, salt="nidaye") # 如果取不到name則自動跳轉到登錄頁面 if not name: return redirect("/login/") return render(request,"index1.html",{"name":name}) def index2(request): name = request.get_signed_cookie("name1", None, salt="nidaye") if not name: return redirect("/login/") return render(request,"index2.html",{"name":name})
hhhhhh
Django中Cookie 和 Session