非常秘书,中秋祝福语大全,拳皇wing1.8
我通过如下的一段程序发送post请求:
import urllib3 pool = urllib3.connection_from_url('http://127.0.0.1:8090') resp = pool.request('post', '/polls/', fields={'key1':'value1', 'key2':'value2'}, headers={'content-type':'application/json'}, encode_multipart=false)
在服务器端我用request.post期望能获取到<querydict: {u'key2': [u'value2'], u'key1': [u'value1']}>,但是我发现获取到的是一个空的<querydict: {}>,用reqyest.body是能获取到原始的请求内容key2=value2&key1=value1的。
这个时候只能去文档中找答案了,但是貌似django中的文档也没给出我答案,这时候我就只能通过源码来找答案了,下面是class httprequest(object)中获取post querydict的函数部分:
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.content_type == 'multipart/form-data': if hasattr(self, '_body'): # use already read data data = bytesio(self._body) else: data = self try: self._post, self._files = self.parse_file_upload(self.meta, data) except multipartparsererror: # an error occurred while parsing post data. since when # formatting the error the request handler might access # self.post, set self._post and self._file to prevent # attempts to parse post data again. # mark that an error occurred. this allows self.__repr__ to # be explicit about it instead of simply representing an # empty post self._mark_post_parse_error() raise elif self.content_type == 'application/x-www-form-urlencoded': self._post, self._files = querydict(self.body, encoding=self._encoding), multivaluedict() else: self._post, self._files = querydict(encoding=self._encoding), multivaluedict()
函数看起来有点长,但是我们只要关注后面的if elif else这三个分支即可,从elif self.content_type == 'application/x-www-form-urlencoded':这个分支能看到只有请求header中的'content-type':'application/x-www-form-urlencoded'才会填充request.post,其它情况下只有一个空的<querydict: {}>。
从这个问题也看到了django对'content-type':'application/json'没有做任何处理,跟我预想的有一点不一样。
以上这篇解决django的request.post获取不到内容的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论