我正在为WSGI + Werkzeug应用程序中的视图编写“login_required”装饰器。Python - 在装饰器中获取原始函数参数
为了做到这一点,我需要获取用户的会话,该会话可通过传递给视图方法的Request对象访问。
虽然,我无法弄清楚如何获得装饰器中的Request实例。我看了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”函数的请求参数?
完美!我使用的是“公开”装饰器中使用的不同语法 - 我不确定我是否理解备用语法。 – ashgromnies 2009-06-18 00:11:00