我有一个View
,它调用另一个函数
class MyView(APIView):
def post(self, request, *args, **kwargs):
abc(a=1, b=2, c=3, *args, **kwargs)
我的功能
def abc(a, b, c, *args, **kwargs):
pass
我面临的问题是,当我致电abc
时,它会说abc() got multiple values for argument 'a'
或有时会说abc() got multiple values for argument 'b'
。
调试一下后,我发现args
正好有3个参数,因此(我猜)当*args
传递给函数时,它与abc
参数发生冲突。我该如何纠正?
答案 0 :(得分:0)
有什么问题? :强>
kwargs
dict包含键x
作为键。
进行调用
abc(a=1, b=2, c=3, *args, **kwargs)
为参数x
其中x是"a", "b", "c"
如何调试:
尝试打印kwargs
:
class MyView(APIView):
def post(self, request, *args, **kwargs):
print(kwargs)
abc(a=1, b=2, c=3, *args, **kwargs)
能够调试这个。它将包含密钥"a", "b", "c"
。
我该如何解决这个问题:(一个肮脏的解决方案)
现在要解决问题,只需从kwargs中删除密钥:
class MyView(APIView):
def post(self, request, *args, **kwargs):
del kwargs['a']
del kwargs['b']
del kwargs['c']
abc(a=1, b=2, c=3, *args, **kwargs)
答案 1 :(得分:-1)
class MyView(APIView):
def post(self, request, *args, **kwargs):
abc(a=1, b=2, c=3, args=args, kwargs=kwargs)