擅长:python、mysql、java
<p>所以对我来说,最好的方法就是显式地将kwargs作为kwargs传递。所以装饰功能实际上应该是:</p>
<pre><code>@validate
def genericHandler(request, **kwargs)
key = kwargs.get('key')
pass
</code></pre>
<p>这样,我就可以调用函数,无论是否使用参数:</p>
^{pr2}$
<p>或者</p>
<pre><code>genericHandler(request, **{ 'key' : key })
</code></pre>
<p>实际的装饰看起来像:</p>
<pre><code>def validate(f):
@wraps(f) # This is to ensure docstrings are passed through the decorated function
def redirect_if_invalid(request, *args, **kwargs):
key = kwargs.get('key')
if not key:
kwargs.set('key', request.key)
return f(request, *args, **kwargs)
return redirect_if_invalid
</code></pre>