Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息。

   通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的对象

   通过get方法只能拿到多个重名参数的第一个

   2. reques常用的属性:

     Flask框架(flask中的request对象,获取请求参数,保存上传的文件)_第1张图片

 4.这里会用到Postman工具

     下载:打开官网,https://www.getpostman.com

      安装:http://www.cnblogs.com/mafly/p/postman.html

      Postman的使用:https://blog.csdn.net/fxbin123/article/details/80428216

5.获取前端发过来的数据

   1.对表单类型:  request.form.get()  

           注意 :    如果get里面的参数是相同的,则只能获取到多个同名参数的第一个

        可以通过request.form.getlist()  # 获取到相同参数的所有数据,返回的是一个列表类型

  2.对 url地址里面所带的查询字符串  request.args.get()   

from flask import Flask, request

app = Flask(__name__)
"""
127.0.0.1:5000/index?city=shanxi&country=china
问号以后的称为  查询字符串(QueryString),有多个时,用 & 区分
对查询字符串用request.args.get()来获取响应的值
"""
'''接口 api: 即一个视图函数加上所对应的路由'''
@app.route("/index", methods=["GET", "POST"])
def index():
    """
         request中包含了前端发送过来的所有数据
         from和data是用来去提取请求体的数据
        通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的对象
        通过get方法只能拿到多个重名参数的第一个
    """    

    name = request.form.get("name")
    age = request.form.get("age")
    city = request.args.get("city")
    name_li = request.form.getlist("name")

    """如果请求体的数据不是表单格式的(如json格式,可以通过request.data获取)"""
    print("request.data: %s"%request.data)  # 打印出不是表单格式的数据
    return "index page name=%s , age=%s , city=%s , name_li=%s"%(name,age,city,name_li)


if __name__ == '__main__':
    app.run(debug=True)

6.运行程序    打开Postman, 选择POST-->x-www-form-urlencoded-->看看headers的类型是不是x-www-form-urlencoded类型

    输入相应的键值对,然后点击Send,运行结果如图:

Flask框架(flask中的request对象,获取请求参数,保存上传的文件)_第2张图片

6.   request属性里面有,method属性:,,记录请求使用的HTTP方法

if request.method == "GET":
    """GET请求对应逻辑"""
    pass
elif request.method == "POST":
    """POST请求对应逻辑"""
    pass

 7.request中的files属性,,,记录请求上传的文件

   已上传的文件存储在内存或是文件系统中一个临时的位置。你可以通过请求对象的 files 属性访问它们。

   每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的 Python file 对象,

   但它还有一个 save() 方法,这个方法允许你把文件保存到服务器的文件系统上。

from flask import Flask, request

app = Flask(__name__)

'''因为是文件,所以只能是POST方式'''
@app.route("/upload", methods=["POST"])
def upload():
    """接受前端传送来的文件"""
    file_obj = request.files.get("pic")
    if file_obj is None:
        # 表示没有发送文件
        return "未上传文件"

    '''
        将文件保存到本地(即当前目录)
        直接使用上传的文件对象保存
    '''
    file_obj.save('pic.jpg')  # 和前端上传的文件类型要相同
    return "上传成功"

    # 将文件保存到本地(即当前目录) 普通的保存方法
    # with open("./pic.jpg",'wb') as f:
    #     data = file_obj.read()
    #     f.write(data)
    #     return "上传成功"

if __name__ == '__main__':
    app.run(debug=True)

 把前端上传的数据保存后端,利用Postman工具-->Body选择form-data 类型-->设置键值对,类型为file,选择一张照片

  注意照片的类型要保存图片的类型一致,

  然后运行上面的程序,成功显示上传成功,然后到后端,即当前的py文件所在的

 目录就有前端上传的图片

 Flask框架(flask中的request对象,获取请求参数,保存上传的文件)_第3张图片

 如果你要把文件按客户端提供的文件名存储在服务器上,那么请把它传递给 Werkzeug 提供的 secure_filename() 函数:

  名称就可以设置为:    secure_filename(file.filename))   #   file获取到的前端的文件

8.对于其他的类型,可以参考上图中的request常用属性,,,注意返回的类型

你可能感兴趣的:(Flask框架,Python进阶,Flask框架的学习)