我正试图为WSGI+Werkzeug应用程序中的视图编写一个“login_required”装饰器。
为了做到这一点,我需要访问用户的会话,该会话可以通过传递给view方法的请求对象访问。
不过,我不知道如何在decorator中获取请求的实例。我看了PEP318,特别是第四个例子,但我不太明白。
以下是我正在尝试的:
def login_required(*args, **kw):
def goto_login(**kw):
return redirect(url_for('login'))
def decorate(f):
# args[0] should be request
args[0].client_session['test'] = True
logged_in = 0
if logged_in:
return f
else:
return goto_login
return decorate
@login_required()
@expose('/hello/<string:name>')
def hello(request, name):
return render_template('say_hello.html', name=name)
但我在尝试调用args[0]
时遇到索引越界错误。
有什么方法可以访问传递到“login_required”装饰器中“hello”函数的请求参数吗?
decorator
login_required
被传递给函数(在本例中为hello
)。所以你要做的是:
kwargs
是一个包含参数作为键和值作为值的字典。所以你只需要检查一下:
some_var = kw['my_property']
相关问题 更多 >
编程相关推荐