Flask | 簡單封裝那個(gè)request聘鳞,讓它更通用

用過Flask做網(wǎng)站的童鞋應(yīng)該也有遇到過一個(gè)問題诡宗,也就是flask的request模塊有多種獲取前端提交的數(shù)據(jù)的方法:

request.json,  request.form,   request.values

很多時(shí)候我們只能規(guī)定前端js請求的方式(request method), 但是我們不能規(guī)則post請求,一定得用ajax的post。

所以在開發(fā)的時(shí)候就可能會出現(xiàn)一個(gè)問題闷哆,就是有時(shí)候獲取到前端提交的數(shù)據(jù)是空的腰奋,然后發(fā)現(xiàn)request.json, request.form, request.values這個(gè)三個(gè)方法中并不是全部獲取不到,取決于前端使用了什么樣的 “技術(shù)方式” 提交抱怔。

這樣下來好像我們這三個(gè)獲取數(shù)據(jù)的方式都得用上劣坊,所以最簡單的方式就是,我們自己寫一一個(gè)新的獲取提交數(shù)據(jù)的方式屈留,把這3個(gè)方法簡單的封裝一下局冰。

Code

1.那我們就寫一個(gè)叫MyRequest()的類簡單的封裝flask的request的三個(gè)方法:

from flask import request
class MyRequest():
    '''
    簡單封裝request的的多個(gè)方法
    '''

    def all(self, key=None, d_value=None):
        '''
        all parameter
        :param key: key
        :param d_value: None
        :return:
        '''
        if not key:
            return request.json,request.form,request.values
        elif request.json and key in request.json:
            _value = request.json[key]
        elif key in request.form:
            _value = request.form[key]
        elif key in request.values:
            _value = request.values[key]
        else:
            _value = d_value
        return _value

    def list(self, key=None, d_value=None):

        '''
        all parameter
        :param key: key
        :param d_value: None
        :return:
        '''
        if not key:
            return request.json,\
                   request.form,\
                   request.values
        elif request.json and key in request.json:
            _value = request.json[key]
        elif key in request.form:
            _value = request.form.getlist(key)
        elif key in request.values:
            _value = request.values.getlist(key)
        else:
            _value = d_value
        return _value

這樣我們就可以使用這里的 all() 和list() 來獲取提交的數(shù)據(jù)。
如果你不想每次都在文件里導(dǎo)入 MyRequest()的話灌危,也可以在每次請求前將MyRequest()實(shí)例賦值給flask的request 這樣我們就可以通過request調(diào)用

如下

在Flask初始化程序里加入

@app.before_request
def req_before(): 
    request.value = MyRequest()

使用時(shí)就可以如下調(diào)用

from flask import request
@api.route('/test', methods=['POST'])
    def test(): 
        page = request.value.all("page", 1)  # 獲取page康二,默認(rèn)為1 
        kw = request.value.all("kw")  # 獲取kw,默認(rèn)為None 
        # ... 
        retrun {}

這樣就解決了上面我們說的問題勇蝙。

你也可以分享你的編程故事或編程經(jīng)驗(yàn)給我沫勿,我會篩選推送給其他小伙伴哦!
[互動(dòng)] 今天我們聊一聊“你”的“編程路”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末味混,一起剝皮案震驚了整個(gè)濱河市产雹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惜傲,老刑警劉巖洽故,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贝攒,死亡現(xiàn)場離奇詭異盗誊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)隘弊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門哈踱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梨熙,你說我怎么就攤上這事开镣。” “怎么了咽扇?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵邪财,是天一觀的道長。 經(jīng)常有香客問我质欲,道長树埠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任嘶伟,我火速辦了婚禮怎憋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己绊袋,他們只是感情好毕匀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著癌别,像睡著了一般皂岔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上展姐,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天凤薛,我揣著相機(jī)與錄音,去河邊找鬼诞仓。 笑死缤苫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墅拭。 我是一名探鬼主播活玲,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谍婉!你這毒婦竟也來了舒憾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤穗熬,失蹤者是張志新(化名)和其女友劉穎镀迂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唤蔗,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡探遵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妓柜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箱季。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖棍掐,靈堂內(nèi)的尸體忽然破棺而出藏雏,到底是詐尸還是另有隱情,我是刑警寧澤作煌,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布掘殴,位于F島的核電站,受9級特大地震影響粟誓,放射性物質(zhì)發(fā)生泄漏奏寨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一努酸、第九天 我趴在偏房一處隱蔽的房頂上張望服爷。 院中可真熱鬧,春花似錦、人聲如沸仍源。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笼踩。三九已至逗爹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚎于,已是汗流浹背掘而。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留于购,地道東北人袍睡。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像肋僧,于是被迫代替她去往敵國和親斑胜。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停嫌吠,如果仍舊對舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,184評論 22 257
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理止潘,服務(wù)發(fā)現(xiàn),斷路器辫诅,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • 聲明:這篇文章主要面向python/Flask/web后端初級開發(fā)者凭戴,文章主要講解了如何搭建一個(gè)基于Flask的純...
    牛富貴兒閱讀 44,571評論 11 95
  • 距離產(chǎn)生美, 也掛肚牽腸炕矮。 有風(fēng)的日子么夫, 不知你是否關(guān)好門窗。 有雨的晚上吧享, 不知你是否增添衣裳魏割。 秋風(fēng)秋雨譬嚣, 冷...
    紫莖閱讀 172評論 1 2