首页 > 解决方案 > 记录 kwargs 时出现 TypeError

问题描述

我在记录 kwargs 和 args 时遇到 TypeError。下面是我用来记录 kwargs 的 Django View 类的基类。

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)

错误日志显示以下错误 -

文件“path/to/app/api_common.py”,第 55 行,初始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) 有什么问题吗?

标签: pythondjango-class-based-views

解决方案


目前,您拥有str(**kwargs). 如果kwargs{'id': '5'},这相当于str(id=5),它引发了一个TypeError因为str不接受id

如果你想要kwargs字典的字符串表示,那么使用:

str(kwargs)

同样,str(*args)如果len(args) > 1. 你应该使用:

str(args)

推荐阅读