我有基于 OpenID 提供程序的登录系统,我想创建像 @login_required 这样的装饰器。但我有一个问题——我需要检查每个对象的权限。我将 id 传递给我的 View ,所以我想知道是否有任何方法可以将它传递给装饰器,或者这是不可能的,我需要在我的 View 中检查用户权限。
请您参考如下方法:
def outer(var1, var2):
def inner(func)
func.foo = var1
func.bar = var2
return func
return inner
@outer(myvar1, myvar2)
def myfunc():
# whatever
pass
虽然您不能将变量直接传递给修饰函数的函数,但您可以创建另一个函数(outer),调用时返回>装饰功能(内部)。您传递 outer 函数变量,它们可用于 inner 函数。这称为闭包。
