背景
上周做项目的时候,有个Post Webhook回调不仅在Body里传了数据,同时URL里也传了参数。request.POST这个QueryDict打印出来的值为{},无法获取URL中的参数。
原因分析
这种问题,首先就是看代码。
大概扫了下Request的代码,问题出在如下的位置:
def _load_post_and_files(self):
"""Populate self._post and self._files if the content-type is a form type"""
if self.method != 'POST':
self._post, self._files = QueryDict(encoding=self._encoding), MultiValueDict()
return
if self._read_started and not hasattr(self, '_body'):
self._mark_post_parse_error()
return
if self

当Django接收到application/xml类型的POST请求时,request.POST无法获取URL参数。问题在于Django不会解析非默认类型的数据。解决方案是手动获取URL参数,例如通过request.build_absolute_uri()或request.get_full_path()来获取完整URL。

1704

被折叠的 条评论
为什么被折叠?



