zoukankan      html  css  js  c++  java
  • Flask框架 之request对象

    一、request对象属性

    属性说明类型
    data 记录请求的数据,并转换为字符串 *
    form 记录请求中的表单数据 MultiDict
    args 记录请求中的查询参数 MultiDict
    cookies 记录请求中的cookie信息 Dict
    headers 记录请求中的报文头 EnvironHeaders
    method 记录请求使用的HTTP方法 GET/POST
    url 记录请求的URL地址 string
    files 记录请求上传的文件 *

    二、form、data、args使用

    @app.route("/login", methods=["GET", "POST"])
    def login():
        print(request.data)
        # 获取表单提交的数据用request.form
        name = request.form.get("name")
        password = request.form.get("password")
        # 获取相同名称,返回列表
        name_li = request.form.getlist("name")
        # 获取queryString数据用
        city = request.args.get("city")
        # 判断请求类型
        if request.method == "GET":
            pass
        elif request.method == "POST":
            pass
        # 获取json数据
        j_name = request.json.get("name")
        return "name=%s, password=%s" % (name, password)

     三、文件上传

    前端代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>文件上传</title>
        <link rel="stylesheet" href="/static/layui/css/layui.css" media="all">
        <style>
            .layui-upload {
                text-align: center;
                margin-top: 10%;
            }
    
            img {
                width: 200px;
            }
        </style>
    </head>
    <body>
    <div class="layui-upload">
        <button type="button" class="layui-btn" id="test1">上传图片</button>
        <div class="layui-upload-list">
            <img class="layui-upload-img" id="demo1">
            <p id="demoText"></p>
        </div>
    </div>
    <script src="/static/layui/layui.js" charset="utf-8"></script>
    <script>
        layui.use('upload', function () {
            var $ = layui.jquery
                , upload = layui.upload;
    
            //普通图片上传
            var uploadInst = upload.render({
                elem: '#test1'
                , url: '/upload'
                , before: function (obj) {
                    //预读本地文件示例,不支持ie8
                    obj.preview(function (index, file, result) {
                        $('#demo1').attr('src', result); //图片链接(base64)
                    });
                }
                , done: function (res) {
                    //如果上传失败
                    if (res.code > 0) {
                        return layer.msg('上传失败');
                    }
                    //上传成功
                    return layer.msg(res.msg);
                }
                , error: function () {
                    //演示失败状态,并实现重传
                    var demoText = $('#demoText');
                    demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
                    demoText.find('.demo-reload').on('click', function () {
                        uploadInst.upload();
                    });
                }
            });
        });
    </script>
    </body>
    </html>
    View Code

    python脚本:

    @app.route("/upload", methods=["POST", "GET"])
    def upload():
        if request.method == "GET":
            return render_template("upload.html")
        elif request.method == "POST":
            files = request.files
            if "file" not in files:
                return json.dumps({"code": 1, "msg": "上传失败"})
            file = files.get("file")
            file.save("./static/upload/" + file.filename)
            return json.dumps({"code": 0, "msg": "上传成功"})

    效果图如下:

  • 相关阅读:
    为Qtcreator 编译的程序添加管理员权限
    热备,冷备,云备
    最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
    进入2012 -- 回顾我走过的编程之路
    为什么中国程序员水平一直上不了层次?无非是这些原因!
    我是如何失去团队掌控的?
    后端开发甩锅奥义
    一个线程oom,进程里其他线程还能运行吗?
    架构师必备,带你弄清混乱的JAVA日志体系!
    IDEA一定要改的八条配置
  • 原文地址:https://www.cnblogs.com/yang-2018/p/11008994.html
Copyright © 2011-2022 走看看