所以我試圖爲我的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