我理解可插拔视图的工作原理。我目前不明白的是如何添加一个类扩展视图所需的登录。我目前这样做:
from flask.views import View
class ShowUsers(View):
def dispatch_request(self):
users = User.query.all()
return render_template('users.html', objects=users)
app.add_url_rule('/users/', view_func=ShowUsers.as_view('show_users'))
那么如何强制登录这个类/函数?
答案 0 :(得分:6)
文档中有关于decorating views
的部分使用Flask-Login?如果内置的login_required
装饰器不适合基于分类的视图,那么您可以自己编写 - 关键是LoginManager
实例上对unauthorized
的调用:
from functools import wraps
def user_required(f):
@wraps(f)
def decorator(*args, **kwargs):
if not current_user.is_authenticated():
return login_manager.unauthorized()
# or, if you're not using Flask-Login
# return redirect(url_for('login_page'))
return f(*args, **kwargs)
return decorator