所以我试图为我的django视图制作一个装饰器,并且我有它的工作。该装饰看起来像向kwargs添加参数时出现错误
# Decorator for the function - update(request, extra=None)
def check_super(view):
def wrapper(request, *args, **kwargs):
status = supercheck(request)
if status=="USER":
raise PermissionDenied
else:
args = [a for a in args]
kwargs = dict((k, v) for k, v in kwargs.items())
kwargs.update({'status':status}) # Offending line
return view(request, *args, **kwargs)
return wrapper
基本上我做的supercheck功能的检查,我想的是,结果传递的另一种说法对我的功能,但该行的错误
update() got an unexpected keyword argument 'status'
上述结果说明
kwargs只是一本字典,对不对?所以我应该可以像这样添加新的绑定,但它一直给我那个错误。这样做也会导致相同的错误
kwargs['status']=status
就是你包裹的功能也称为“更新”。我认为有问题的一行是你在你标记的行下面调用view()的地方。你的第一行注释中的“update”函数不接受称为“状态”的kwarg –
是的,我打包的函数被称为update。我认为像在wrapper()中的return语句中那样传递kwargs的全部要点是我可以为它添加任意参数 –
函数''f(** kwargs)''可以接受任意数量的关键字args,但'update(extra = None)''只需要一个关键字参数。 – CppLearner