最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django解決無法從request.POST中獲取URL傳進(jìn)來的參數(shù)

 更新時間:2023年12月28日 14:28:41   作者:Similar_Fair  
這篇文章主要介紹了Django解決無法從request.POST中獲取URL傳進(jìn)來的參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

背景

上周做項目的時候,有個Post Webhook回調(diào)不僅在Body里傳了數(shù)據(jù),同時URL里也傳了參數(shù)。

request.POST這個QueryDict打印出來的值為{},無法獲取URL中的參數(shù)。

原因分析

這種問題,首先就是看代碼。

大概掃了下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.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.
                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()

這個回調(diào)接口傳進(jìn)來的content_type 為 application/xml,所以會默認(rèn)不解析。

其實(shí)按照這段代碼來看,只要是Post請求,都不會解析URL上的參數(shù)(我覺得這才是正常套路,接口回調(diào)不規(guī)范,他們要背鍋)。

問題解決

其實(shí)很簡單,我們只需要把帶參數(shù)的URL搞出來即可。

post = QueryDict(request.get_full_path().split('?')[1])
post.get('xx')

或者

# 這段代碼是根據(jù)get_full_path的具體實(shí)現(xiàn)寫出來的,還沒測,提供個思路給大家
post = QueryDict(iri_to_uri(self.META.get('QUERY_STRING', '')))
post.get('xx')

get_full_path具體實(shí)現(xiàn)如下:

    def get_full_path(self, force_append_slash=False):
        return self._get_full_path(self.path, force_append_slash)
        
    def _get_full_path(self, path, force_append_slash):
        # RFC 3986 requires query string arguments to be in the ASCII range.
        # Rather than crash if this doesn't happen, we encode defensively.
        return '%s%s%s' % (
            escape_uri_path(path),
            '/' if force_append_slash and not path.endswith('/') else '',
            ('?' + iri_to_uri(self.META.get('QUERY_STRING', ''))) if self.META.get('QUERY_STRING', '') else ''
        )

(遇事不決,看代碼就對了)

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python讀取圖像并顯示灰度圖的實(shí)現(xiàn)

    Python讀取圖像并顯示灰度圖的實(shí)現(xiàn)

    這篇文章主要介紹了Python讀取圖像并顯示灰度圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python list等分并從等分的子集中隨機(jī)選取一個數(shù)

    python list等分并從等分的子集中隨機(jī)選取一個數(shù)

    這篇文章主要介紹了python list等分并從等分的子集中隨機(jī)選取一個數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python隨機(jī)驗證碼生成和join?字符串的問題解析

    Python隨機(jī)驗證碼生成和join?字符串的問題解析

    Python中有join()和os.path.join()兩個函數(shù),join是將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個新的字符串而os.path.join():?將多個路徑組合后返回,本文給大家介紹的非常詳細(xì),需要的朋友一起看看吧
    2022-04-04
  • 使用Python實(shí)現(xiàn)調(diào)整Excel中的行列順序

    使用Python實(shí)現(xiàn)調(diào)整Excel中的行列順序

    調(diào)整Excel?行列順序指的是改變工作表中行或列的位置,以便更好地展示和分析數(shù)據(jù),本文將介紹如何通過Python高效地調(diào)整Excel?行列順序,感興趣的可以了解下
    2025-01-01
  • 基于Python+OpenCV實(shí)現(xiàn)自動掃雷功能

    基于Python+OpenCV實(shí)現(xiàn)自動掃雷功能

    相信許多人很早就知道有掃雷這么一款經(jīng)典的游(顯卡測試)戲(軟件),掃雷作為一款在Windows9x時代就已經(jīng)誕生的經(jīng)典游戲,從過去到現(xiàn)在依然都有著它獨(dú)特的魅力,所以本文小編給大家介紹了如何使用Python+OpenCV實(shí)現(xiàn)自動掃雷效果,感興趣的朋友可以參考下
    2023-12-12
  • matlab中實(shí)現(xiàn)矩陣刪除一行或一列的方法

    matlab中實(shí)現(xiàn)矩陣刪除一行或一列的方法

    下面小編就為大家分享一篇matlab中實(shí)現(xiàn)矩陣刪除一行或一列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python如何高效找出序列中出現(xiàn)次數(shù)最多的元素

    Python如何高效找出序列中出現(xiàn)次數(shù)最多的元素

    這篇文章主要為大家詳細(xì)介紹了Python如何高效找出序列中出現(xiàn)次數(shù)最多的元素,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-08-08
  • Python 16進(jìn)制與中文相互轉(zhuǎn)換的實(shí)現(xiàn)方法

    Python 16進(jìn)制與中文相互轉(zhuǎn)換的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Python 16進(jìn)制與中文相互轉(zhuǎn)換的實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python入門教程(三)Python語法解析

    Python入門教程(三)Python語法解析

    這篇文章主要介紹了Python入門教程(三)Python語法解析,Python是一門非常強(qiáng)大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • Keras存在自定義loss或layer怎樣解決load_model報錯問題

    Keras存在自定義loss或layer怎樣解決load_model報錯問題

    這篇文章主要介紹了Keras存在自定義loss或layer怎樣解決load_model報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論

道孚县| 新巴尔虎右旗| 商丘市| 昭苏县| 海城市| 乌拉特后旗| 鄂尔多斯市| 宁化县| 阳春市| 闽侯县| 珲春市| 辽宁省| 上虞市| 建瓯市| 修水县| 平山县| 定结县| 卢氏县| 三河市| 亚东县| 诸暨市| 柯坪县| 罗田县| 辽阳市| 九寨沟县| 平罗县| 漳州市| 白朗县| 沈丘县| 莱州市| 安徽省| 尖扎县| 绥江县| 永安市| 平果县| 南华县| 防城港市| 鄯善县| 苗栗市| 洛隆县| 贵阳市|