欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

Flask Web開發(fā)入門(九)之表單處理 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?

您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >

Flask Web開發(fā)入門(九)之表單處理

發(fā)表時(shí)間:2018-1-10

發(fā)布人:葵宇科技

瀏覽次數(shù):46

本章我們介紹Flask Web開發(fā)中的表單處理

application/json類型請求

  • 前臺(tái)請求代碼:
            $.ajax({
                url: '/add'
                , type: 'POST'
                , data: JSON.stringify(data.field)
                , contentType: 'application/json'
                , success: function (response) {
                    console.log(response);
                    if (response.code == 0) {
                        layer.msg('新增成功!');
                    } else {
                        layer.alert('新增失敗!')
                    }
                }
            })
  • 后臺(tái)捕獲請求,request.data存儲(chǔ)了我們的請求數(shù)據(jù)
    這里寫圖片描述

  • 后臺(tái)出處理代碼,其中參數(shù)d為dict類型數(shù)據(jù)request.data

def add_monitor(d):
    logger.debug('add monitor is %s' % d)
    d = json.loads(d)
    conn = monitor_db.get_connection_with_url(url)    
    # Content-Type: application/json
    conn.execute(T_Monitor.insert(), [{
        'credit_type': d['credit_type']
        , 'query_type': d['query_type']
        , 'credit_status': d['credit_status']
        , 'elapsed_time': int(random.random() * 100)
    }])

application/x-www-form-urlencoded類型請求

  • 我們稍微修改下前臺(tái)發(fā)送代碼,不指定contentType參數(shù):即指定請求內(nèi)容格式。注意:雖然我們的請求數(shù)據(jù)是JSON字串,但Ajax中沒有指定contentType參數(shù),那么數(shù)據(jù)請求格式仍舊為application/x-www-form-urlencoded
         $.ajax({
                url: '/add'
                , type: 'POST'
                , data: JSON.stringify(data.field)
                , success: function (response) {
                    console.log(response);
                    if (response.code == 0) {
                        layer.msg('新增成功!');
                    } else {
                        layer.alert('新增失敗!')
                    }
                }
            })

這里寫圖片描述

通過后臺(tái)代碼調(diào)式,我們可以看到request.form存儲(chǔ)了前臺(tái)的請求數(shù)據(jù)如下:
這里寫圖片描述

注意上圖紅框部分:

  • request.form是一個(gè)ImmutableMultiDict類型的對象

  • request.form的鍵值key存儲(chǔ)了請求數(shù)據(jù)的JSON字串

  • request.form的長度為1

因此,通過上面的代碼分析,我們定義Flask表單處理后臺(tái)代碼實(shí)現(xiàn)如下,其中參數(shù)d是一個(gè)ImmutableMultiDict類型對象:

# add monitor
def add_monitor(d):
    logger.debug('add monitor is %s' % d)
    conn = monitor_db.get_connection_with_url(url)

    for key in d.keys():
        logger.debug("form data is %s" % json.loads(key))
        d_dict = json.loads(key)
        conn.execute(T_Monitor.insert(), [{
            'credit_type': d_dict['credit_type']
            , 'query_type': d_dict['query_type']
            , 'credit_status': d_dict['credit_status']
            , 'elapsed_time': int(random.random() * 100)
        }])

實(shí)現(xiàn)效果

這里寫圖片描述

源碼參考:https://github.com/ypmc/flask-sqlalchemy-web

相關(guān)案例查看更多