def check_login(func): # 自定義登入驗證裝飾器
def warpper(request, *args, **kwargs):
is_login = request.session.get('is_login', false)
if is_login:
func(request, *args, **kwargs)
else:
return redirect("/login")
return warpper
def login_user(request):
if request.method == 'post':
form = loginform(request.post)
if form.is_valid():
all_data = form.clean() #獲取post資料,例如
exist = user.objects.filter(username = all_data['form_username'],password = all_data['form_password']).first()
if exist:
request.session['is_login'] = true #設定session的隨機字段值
request.session['username'] = exist.username #設定uname欄位為登入使用者
return redirect('/home')
else:
return httpresponse("賬戶或密碼錯誤")
else:
form = loginform()
return render(request, 'login.html', )
@check_login
def home(request):
username = request.session.get('uname', false) #獲取登入使用者名稱
return render(request, home.html', ) #使用者名稱渲染到前端頁面
用裝飾器實現登入
login status jingdong false login status weixin false defstart list list1 for i in list print i,list i select num input 請輸入訪問網頁的編號 退出 q if select num ...
裝飾器實現使用者驗證登入
在實現使用者驗證的登入的時候可以使用裝飾器工廠產生裝飾器,讓裝飾器得到引數,從而判斷登入型別,並驗證使用者登入條件,實現如下 def login type type def outer f def inner if type qq name input 請輸入使用者名稱 psw input 請輸入密...
Python之Flask登入認證 裝飾器
from flask import flask,render template,request,response,redirect,session,url for usrs 2 3 4 redirect to 重定向到另乙個頁面 subdomain admin 子網域名稱 請求相關的全部在reque...