Django練習——用戶管理系統——補充知識點
阿新 • • 發佈:2017-12-06
路由 .py 裝飾器 views session dispatch 分發 clas int
補充知識點:
1.FBV 和 CBV
views.py # 方法一:FBV def login(request): if request.method == "POST": user = request.POST.get("user") pwd = request.POST.get("pwd") c = models.Administrator.objects.filter(username=user,password=pwd).count() print(c) if c: #設置session中存儲的數據request.session["is_login"] = True request.session["username"] = user #尤其註意跳轉到哪個頁面!!! return render(request,"index.html",{"username":user}) else: msg = "用戶名或密碼錯誤" return redirect("/login.html",{"msg":msg}) return render(request,"login.html")
urs.py
# url(r‘^login.html$‘, views.login),
cbv:
#CBV from django import views class Login(views.View): def get(self,request,*args,**kwargs): return render(request, "login.html") def post(self,request,*args,**kwargs): user = request.POST.get("user") pwd= request.POST.get("pwd") c = models.Administrator.objects.filter(username=user, password=pwd).count() print(c) if c: #設置session中存儲的數據 request.session["is_login"] = True request.session["username"] = user #尤其註意跳轉到哪個頁面!!! return render(request,"index.html",{"username":user}) else: msg = "用戶名或密碼錯誤" return redirect("/login.html",{"msg":msg})
urs.py
url(r‘^login.html$‘, views.Login.as_view()),#以類的方式進行創建
2.類中用裝飾器
方法一:自定義裝飾器
from django import views from django.utils.decorators import method_decorator#1.引入庫 #2.定義裝飾器函數 def outer(func): def inner(request,*args,**kwargs): print(request.method) return func(request,*args,**kwargs) return inner class Login(views.View): #3.使用裝飾器 @method_decorator(outer) def get(self,request,*args,**kwargs): return render(request, "login.html")
方法二:自定義dispatch方法,同時繼承父類該方法,等同於裝飾器
from django import views class Login(views.View): #1.先執行自定義的dispatch方法 def dispatch(self, request, *args, **kwargs): print(11111) if request.method == "GET": return HttpResponse("ok") #2.再調用父類中的dispatch方法,dispatch方法類似路由分發 ret = super(Login,self).dispatch(request, *args, **kwargs) print(22222) return ret def get(self,request,*args,**kwargs): return render(request, "login.html") def post(self,request,*args,**kwargs): user = request.POST.get("user") pwd = request.POST.get("pwd") c = models.Administrator.objects.filter(username=user, password=pwd).count() print(c) if c: #設置session中存儲的數據 request.session["is_login"] = True request.session["username"] = user #尤其註意跳轉到哪個頁面!!! return render(request,"index.html",{"username":user}) else: msg = "用戶名或密碼錯誤" return redirect("/login.html",{"msg":msg})
Django練習——用戶管理系統——補充知識點