【发布时间】:2019-09-14 22:16:02
【问题描述】:
我在记录 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("请求: %s, Args: %s, Kwargs: %s" % (request.dict, str(*args), str(**kwargs))) TypeError: 'id' 是此函数的无效关键字参数
str(**kwargs) 有什么问题吗?
【问题讨论】:
-
CustomAPI类是什么?您确定该请求正在由APIProductDetails类处理并且它不匹配不同的 URL 模式吗?请显示完整的回溯。 -
@Alasdair 感谢您的指点。是的,CustomAPI 导致了错误。但是我仍然很困惑为什么会发生这种情况。已在代码中添加详细信息。如果我正在评论记录器行,它工作正常。
-
顺便说一句,
CustomApi._url不是线程安全的 - 如果您稍后回读CustomApi._url,您可能会看到另一个请求写入的值。设置self._url并稍后回读self._url应该是安全的。 -
感谢指点。将对此进行审核。
标签: python django-class-based-views