2 回答

TA貢獻1799條經驗 獲得超8個贊
要在登錄時對用戶進行身份驗證,您可以這樣做:
from flask import redirect, render_template, request, session
from functools import wraps
def login_required(f):
? ? @wraps(f)
? ? def decorated_function(*args, **kwargs):
? ? ? ? if not (current_user.is_authenticated and current_user.account_type == 'su'):
? ? ? ? ? ? return redirect(url_for('blueblue.login'))
? ? ? ? return f(*args, **kwargs)
? ? return decorated_function
這為登錄用戶定義了一個單獨的裝飾器。
使用裝飾器就像包含一行簡單的代碼一樣簡單:
@blueblue.route('/', methods=['GET', 'Post'])
@login_required
def deactivate_trainer():
? ? form = ActivateDeactivateTrainer
? ? return render_template('x.html', form=form)
瞧!您不必再使用那些煩人的 if-else 條件!

TA貢獻1804條經驗 獲得超2個贊
你必須functools.wraps()在燒瓶中使用它來處理
這就是我編輯你的代碼的方式:
from functools import wraps
from flask import redirect, url_for
def my_decorator(function):
? ? @wraps(function)
? ? def decorated_function(*args, **kwargs):
? ? ? ? if current_user.is_authenticated and current_user.account_type == 'su':
? ? ? ? ? ? return function(*args, **kwargs)
? ? ? ? else:
? ? ? ? ? ? return redirect(url_for('blueblue.login'))
你可以這樣使用你的裝飾器
@blueblue.route('/', methods=['GET', 'Post'])
@my_decorator
def deactivate_trainer():
? ? #...
添加回答
舉報