久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    flask的post,get請求及獲取不同格式的參數(shù)

     印度阿三17 2019-10-29

    1 獲取不同格式參數(shù)

    1.0 獲取json參數(shù)

    • Demo

    from flask import Flask, request, jsonify
    app = Flask(__name__)
    
    @app.route('/jsonargs/<string:args_1>', methods=['POST'])
    def json_args(args_1):
        args_2 = request.json.get("args_2")
        args_3 = request.json['args_3']
        return jsonify({"args_1":args_1, "args_2":args_2, "args_3":args_3})
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8080, debug=True)
    • request

    1.2 獲取form參數(shù)

    • Demo

    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    @app.route('/formargs/<int:args_1>', methods=['POST'])
    def form_args(args_1):
        args_2 = request.form.get('args_2')
        args_3 = request.form['args_3']
        return jsonify({"args_1":args_1, "args_2":args_2, "args_3":args_3})
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8080, debug=True)
    • request

    1.3 get獲取地址欄參數(shù)

    from flask import Flask, request, jsonify
    app = Flask(__name__)
    
    @app.route('/getargs', methods=['GET', 'POST'])
    def get_args():
        args_1 = request.args.get("args_1")
        args_2 = request.args.get("args_2")
        args_3 = request.args.get("args_3")
        return jsonify({"args_1":args_1, "args_2":args_2, "args_3":args_3})
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8080, debug=True)

    Request

    1.4 獲取file文件

    from flask import Flask, request, jsonify
    import os
    basedir = os.path.abspath(os.path.dirname(__name__))
    app = Flask(__name__)
    
    @app.route('/imageprocess', methods=['GET', 'POST'])
    def image_preprocess():
        # get upload image and save
        image = request.files['image']
        path = basedir   "/source_images/"
        file_path = path   image.filename
        image.save(file_path)
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8080, debug=True)

    1.5 獲取任何格式

    from flask import Flask, request
    
    app = Flask(__name__)
    
    def upload_data():
        data = request.values.get("input")
        return jsonify({"data type":"successfully upload!"})
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=8090, debug=True)

    2 文件格式解析

    from flask import Flask, jsonify, request,abort
    import os
    
    app = Flask(__name__)
    def path_get():
        path = os.path.abspath(os.path.dirname(__name__))
        return path
    
    @app.route('/connect', methods=["GET"])
    def connect():
        return jsonify({"connect state":"successfully connect!"})
    
    @app.route('/upload_data', methods=["GET", "POST"])
    def upload_data():
        # 判斷form文件是否為空及是否是form文件
        if request.form and 'input' in request.form:
            upload_data = request.form['input']
            form_type = request.form
            print("form type: {}".format(form_type))
            # return jsonify({"input data":upload_data})
            return jsonify({"form data type":form_type})
        # 判斷json文件是否為空及是否是json文件
        elif request.json and 'input' in request.json:
            upload_data = request.json['input']
            # return jsonify({"input data":upload_data})
            # return jsonify({"input test":"success"})
            json_type = request.json
            print("json type: {}".format(json_type))
            return jsonify({"form data type":json_type})
        # 判斷files文件是否為空及是否是files文件
        elif 'input' in request.files:
            file = request.files["input"]
            path = path_get()   "/images/test.png"
            # file.save(path)
            files_type = request.files
            print("files type: {}".format(files_type))
            return jsonify({"path":path})
            
            # return jsonify({"form data type":files_type})
    
        else:
            abort(400)
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8098, debug=True)

    Result

    # form數(shù)據(jù)
    form type: ImmutableMultiDict([('input', 'dancer')])
    {
        "form data type": {
            "input": "dancer"
        }
    }
    =======================
    # json數(shù)據(jù)
    json type: {'input': 'jumper'}
    {
        "form data type": {
            "input": "jumper"
        }
    }
    =======================
    # files文件
    files type: ImmutableMultiDict([('input', <FileStorage: '1.jpeg' ('image/jpeg')>)])

    Analysis
    (1) form數(shù)據(jù)是可遍歷的字典,可使用字典屬性;
    (2) json數(shù)據(jù)為字典,可使用字典屬性;
    (3) files數(shù)據(jù)為可遍歷的字典,可使用字典屬性,通過key判斷是否存在該key,如input這個(gè)鍵;
    (4) 當(dāng)使用數(shù)據(jù)中的一種格式時(shí),其他的數(shù)據(jù)為None,不可遍歷,因此直接使用if判斷是否為該類型的數(shù)據(jù),會(huì)拋出錯(cuò)誤TypeError: argument of type 'NoneType' is not iterable,所以通過先判斷數(shù)據(jù)是否為空,然后判斷是否為指定格式,解除錯(cuò)誤;

    3 獲取checkbox數(shù)據(jù)

    3.1 獲取一個(gè)checkbox數(shù)據(jù)

    • html

    <p><input type="checkbox" name="checkbox_name" value="選擇框">選擇框</p>
    • flask

    data = request.values.get("checkbox_name")

    3.2 獲取多個(gè)checkbox數(shù)據(jù)

    • html

    <p><input type="checkbox" name="checkbox_names" value="選擇1">選擇1</p>
    <p><input type="checkbox" name="checkbox_names" value="選擇1">選擇2</p>
    <p><input type="checkbox" name="checkbox_names" value="選擇1">選擇3</p>
    • flask

    datas = request.values.getlist("checkbox_names")

    3.3 分級選擇

    參考:https://www.cnblogs.com/kaituorensheng/p/4529113.html

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    
    
    <script>
    function allSelect(check_v, checkname)
    {
        var v_item = document.getElementsByName(check_v);
        var items = document.getElementsByName(checkname);
        for (var i = 0; i < items.length;   i)
        {
            if (v_item[0].checked)
            {
                items[i].checked = true;
            }
            else
            {
                items[i].checked = false;
            }
        }
    }
    
    function singleSelect2parent(check_v, checkname)
    {
        var v_item = document.getElementsByName(check_v);
        var items = document.getElementsByName(checkname);
        var childStatus = true;
        for (var i = 0; i < items.length;   i)
        {
            childStatus = (childStatus && items[i].checked);
        }
        if (childStatus)
        {
            v_item[0].checked = true;
        }
        else
        {
            v_item[0].checked = false;
        }
    }
    
    </script>
    </head>
    <body>
    
    <p> <input type="checkbox" checked name="checkbox_v1" value="version1" onclick="allSelect('checkbox_v1', 'checkbox1')">默認(rèn)全選</p>
    <ul>
        <p> <input type="checkbox" checked name="checkbox1" value="layer1" onclick="singleSelect2parent('checkbox_v1', 'checkbox1')">tiger_roads</p>
        <p> <input type="checkbox" checked name="checkbox1" value="layer2" onclick="singleSelect2parent('checkbox_v1', 'checkbox1')">poly_landmarks</p>
        <p> <input type="checkbox" checked name="checkbox1" value="layer3" onclick="singleSelect2parent('checkbox_v1', 'checkbox1')">poi</p>
    </ul>
    
    <p> <input type="checkbox" name="checkbox_v2" value="version2" onclick="allSelect('checkbox_v2', 'checkbox2')">默認(rèn)全不選</p>
    <ul>
        <p> <input type="checkbox" name="checkbox2" value="layer1" onclick="singleSelect2parent('checkbox_v2', 'checkbox2')" >tiger_roads</p>
        <p> <input type="checkbox" name="checkbox2" value="layer2" onclick="singleSelect2parent('checkbox_v2', 'checkbox2')">poly_landmarks</p>
        <p> <input type="checkbox" name="checkbox2" value="layer3" onclick="singleSelect2parent('checkbox_v2', 'checkbox2')">poi</p>
    </ul>
    </body>
    
    </html>

    4 總結(jié)
    (1) 數(shù)據(jù)獲取使用request請求,常用數(shù)據(jù)格式有json,form,file及地址欄的get請求數(shù)據(jù);
    (2) form及json數(shù)據(jù)請求方式均有兩種,如request.json.get(),request.json[];
    (3) 獲取文件數(shù)據(jù),可通過filename屬性獲取文件名,save屬性進(jìn)行保存;
    (4) 地址欄可直接寫入數(shù)據(jù),需在route的方法內(nèi)使用格式為:<type:args>如<int:id>,<string:name>等;
    (5) 通過判斷輸入數(shù)據(jù)的格式,提供不同類型的輸入;

    [參考文獻(xiàn)]
    [1]https://www.jianshu.com/p/ecd97b1c21c1
    [2]https://blog.csdn.net/p571912102/article/details/80526634
    [3]https://www.cnblogs.com/kaituorensheng/p/4529113.html
    [4]https://blog.csdn.net/kuangshp128/article/details/68926902

    來源:https://www./content-4-532651.html

      本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 久久婷婷五月综合色国产免费观看| 色天天天综合网色天天| 午夜成人无码免费看网站| 亚洲中文字幕无码一区无广告| 天码AV无码一区二区三区四区| 中文无码乱人伦中文视频在线| 人妻系列无码专区免费| 国产成人亚洲精品无码青APP| av中文字幕一区二区| 国产亚洲精品无码不卡| 中文字幕在线国产精品| 国产裸体XXXX视频在线播放| 午夜福利高清在线观看| AV区无码字幕中文色| 午夜高清福利在线观看| 国产精品福利自产拍在线观看 | 国产盗摄xxxx视频xxxx| 亚洲色大成网站WWW永久网站| 亚洲AV无码一区二区乱子伦| 综合激情亚洲丁香社区| 亚洲AV无码之国产精品网址| 婷婷六月综合缴情在线| 护士张开腿被奷日出白浆| 国产日产欧产精品精乱了派| 蜜芽久久人人超碰爱香蕉| 国产超碰无码最新上传| 国产成人AV在线免播放观看新 | 国内精品伊人久久久久影院对白| 东京热人妻无码一区二区av| 国产360激情盗摄全集| 天堂中文8资源在线8| 婷婷综合久久中文字幕| 国产精品久久福利新婚之夜| 国产欧美日韩精品丝袜高跟鞋| 国产亚洲精品第一综合另类灬| 人妻系列无码专区69影院| 18禁超污无遮挡无码网址极速| 自偷自拍亚洲综合精品| 国产片AV国语在线观看手机版| 欧美交a欧美精品喷水| 色播久久人人爽人人爽人人片AV|