一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 解決Django的request.POST獲取不到內(nèi)容的問題

解決Django的request.POST獲取不到內(nèi)容的問題

2021-02-26 00:09NoneSec Python

今天小編就為大家分享一篇解決Django的request.POST獲取不到內(nèi)容的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

我通過如下的一段程序發(fā)送post請求:

?
1
2
3
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)

在服務(wù)器端我用request.POST期望能獲取到<QueryDict: {u'key2': [u'value2'], u'key1': [u'value1']}>,但是我發(fā)現(xiàn)獲取到的是一個(gè)空的<QueryDict: {}>,用reqyest.body是能獲取到原始的請求內(nèi)容key2=value2&key1=value1的。

這個(gè)時(shí)候只能去文檔中找答案了,但是貌似Django中的文檔也沒給出我答案,這時(shí)候我就只能通過源碼來找答案了,下面是class HttpRequest(object)中獲取POST QueryDict的函數(shù)部分:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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()

函數(shù)看起來有點(diǎn)長,但是我們只要關(guān)注后面的if elif else這三個(gè)分支即可,從elif self.content_type == 'application/x-www-form-urlencoded':這個(gè)分支能看到只有請求header中的'Content-Type':'application/x-www-form-urlencoded'才會填充request.POST,其它情況下只有一個(gè)空的<QueryDict: {}>。

從這個(gè)問題也看到了Django對'Content-Type':'application/json'沒有做任何處理,跟我預(yù)想的有一點(diǎn)不一樣。

以上這篇解決Django的request.POST獲取不到內(nèi)容的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/liuxingen/article/details/54176205

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天黄视频 | 性派对videos18party| 国产乱码一卡二卡3卡四卡 国产乱插 | 欧美色图亚洲天堂 | 97超pen个人视频公开视频视 | 欧美 变态 另类 人妖班 | 波多野结衣 在线 | 无人知晓小说姜璟免费阅读 | 69日本xxⅹxxxxx19 | 美女脱了内裤打开腿让人羞羞软件 | 日本高清在线不卡 | 奶茶视频官网免费 | 日韩理论片在线看免费观看 | 奇米影视小说 | 国产免费一区二区三区免费视频 | 国产精品中文字幕 | 四虎永久免费地址在线观看 | 亚洲丰满女人ass硕大 | 99精品国产高清一区二区三区香蕉 | 国色天香社区在线视频免费观看 | 久久精品国产久精国产果冻传媒 | 国产成年人网站 | 亚洲第一男人网站 | 精品一成人岛国片在线观看 | 亚洲精品老司机福利在线播放 | 欧美日韩高清观看一区二区 | 美妇在线 | 久久久精品成人免费看 | 精品视频一区在线观看 | 国产片自拍 | 67194久久| av中文字幕网免费观看 | 国产一区二区视频在线播放 | 国产精品露脸国语对白99 | 人禽l交视频在线播放 视频 | 亚洲精品综合一区二区 | 色哺乳妇hd | 欧美一区欧美二区 | 国语自产拍在线播放不卡 | 丁香六月色婷婷综合网 | 亚洲视频99 |