Django學習手冊 - cookie / session
阿新 • • 發佈:2018-09-06
ons doc abcd use views 日期 spa .html expires
cookie
""" cookie屬性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,salt="加密鹽",....) 參數: key 鍵 value=“” 值 max_age=None 超時時間 expires=None 超時日期 path="/" cookit生效的路徑,/表示根路徑,特殊的,跟路徑的cookie可以被任何url被任何url的頁面訪問 domain=None cookie生效的域名 secure=False https傳輸 httponly=False 只能http協議傳輸,無法javascript獲取(不是絕對,底層抓包可以獲取到) 獲取cookie request.COOKIES request.COOKIES[‘username‘] request.COOKIES.get("username") 設置cookie response = render(request,‘index.html‘) response = redirect("/index/") response = set_cookie("key","value") return response 加鹽配置: obj = HttpResponse("S") 獲取加鹽cookie obj.set_signed_cookie("username","passwd",salt="jiayan") 設置加鹽cookie obj.get_signed_cookie("username",salt="jiayan") 獲取與設置的加鹽 一定要是相同的加鹽字符"""
前端:(login 頁面)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <form action="/login/" method="post"> <p> <span>用戶名:</span> <input type="text" name="user"> <span>密碼:</span><input type="password" name="pwd"> <input type="submit" value="提交"> </p> </form> </div> </body> </html>
前端:(index頁面)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1> 歡迎登錄......... </h1> </body> </html>
URL:
from django.contrib import admin from django.urls import path from django.conf.urls import url from app01 import views urlpatterns = [ path(‘admin/‘, admin.site.urls), url(‘^login/‘, views.login), url(‘^index/‘, views.index), ]
後端:
from django.shortcuts import render,HttpResponse,redirect # Create your views here. def login(request): print(request.COOKIES) print(request.session) if request.method == "POST": u = request.POST.get("user",None) p= request.POST.get("pwd",None) if u == "root" and p == "123": # cookie的方式: # ret = redirect("/index/") # #設置cookie數值 # ret.set_cookie("name","123",10) # return ret #session方式 request.session["info_login"]=True request.session["user"] = u return redirect("/index/") else: redirect("/login/") return render(request,"login.html") def index(request): #cookie # if request.COOKIES.get("name",None): # print("index") # return render(request,"index.html") #session if request.session.get("info_login",None): name = request.session.get("user") return render(request,"index.html") #session 默認存放在數據庫中。 else: return redirect("/login/")
--------------------------------------------------------------------------------------------------------------------------------------------------------
裝飾器的方式:
from django.shortcuts import render,redirect,HttpResponse # Create your views here. def aut(fum): def log(request,*args,**kwargs): if request.COOKIES.get("user",None): return fum(request,*args,**kwargs) else: return redirect("/login/") return log def login(request): if request.method == "POST": u = request.POST.get("user", None) p = request.POST.get("pwd", None) if u == "root" and p == "123": ret = redirect("/index/") # ret.set_cookie("user", u) ret.set_signed_cookie("user",u,salt="abcd") return ret else: return redirect("/login/") return render(request,"login.html") @aut def index(request): return HttpResponse("OK")
Django學習手冊 - cookie / session