当记录kwargs时出现TypeError

2024-09-30 00:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在记录kwargs和args时遇到TypeError。下面是我用来记录kwargs的Django视图类的基类。你知道吗

class CustomAPI(APIView):
    _url = None

    def initial(self, request, *args, **kwargs):
        logger.info("Request: %s, Args: %s, Kwargs: %s" % (request.__dict__, str(*args), str(**kwargs)))
        CustomAPI._url = request.get_full_path()
        super(CustomAPI, self).initial(request, *args, **kwargs)

错误日志显示以下错误-

File "path/to/app/api_common.py", line 55, in initial logger.info("Request: %s, Args: %s, Kwargs: %s" % (request.dict, str(*args), str(**kwargs))) TypeError: 'id' is an invalid keyword argument for this function

str(**kwargs)有问题吗?你知道吗


Tags: selfinfourlrequest记录argsloggerkwargs
3条回答

目前,您有str(**kwargs)。如果kwargs{'id': '5'},这相当于str(id=5),这会引发TypeError,因为str不接受id。你知道吗

如果需要kwargsdict的字符串表示,请使用:

str(kwargs)

类似地,如果len(args) > 1,则str(*args)将给出一个TypeError。您应该使用:

str(args)

或者可以在方法中传递id

class APIProductDetails(CustomAPI):

    permission_classes = (CustomAuthentication,)

    def get(self, request, id):
        return Response(data={}, status=200)

应该通过方法的self.kwargs而不是kwargs访问参数。你知道吗

Django实际上并没有直接调用您的方法。由于它动态地创建类实例,kwargs不像在基于函数的视图中那样被访问。DRF视图只是Django通用视图,因此规则也适用于它们。你知道吗

相关问题 更多 >

    热门问题