OJF*_*ord 2 python flask flask-login
我认为我可以通过__enter__如下装饰来要求登录所有派生视图:
from flask.views import MethodView
from flask.ext.login import login_required
class LoggedInView(MethodView):
@login_required
def __enter__(self):
pass
Run Code Online (Sandbox Code Playgroud)
如果我添加一些日志记录,结果__enter__是没有输入。同样,__exit__不会发生。
这里发生了什么?
我可以修改样式来装饰一些其他功能,但是有必要调用super()派生视图,这违背了这样做的初衷。
如何在继承之外的视图中没有任何工作的情况下强制执行此装饰LoggedInView?
要装饰MethodView实例的方法,您必须添加一个decorators带有要调用的装饰器列表的类变量。请参阅文档。
对于您的示例,它将是:
from flask.views import MethodView
from flask.ext.login import login_required
class LoggedInView(MethodView):
decorators = [login_required]
def get(self):
pass
def post(self):
pass
# ...
Run Code Online (Sandbox Code Playgroud)
请注意,装饰器应用于所有定义的方法。