request 的form,data,args用法
获取请求参数
from flask import request就是 Flask 中表示当前请求的 request 对象,request对象中保存了一次HTTP请求的一切信息。
# coding:utf-8from flask import Flask, requestapp = Flask(__name__)# 接口 api# 127.0.0.1:5000/index?city=shenzhen&country=china 查询字符串 QueryString@app.route("/index", methods=["GET", "POST"])def index(): # request中包含了前端发送过来的所有请求数据 # form和data是用来提取请求体数据 # 通过requset.form可以直接提取请求体中的表单格式的数据, 是一个类字典的对象 # 通过get方法只能拿到多个同名参数的第一个 name = request.form.get("name") age = request.form.get("age") name_li = request.form.getlist("name") # 如果是请求体的数据不是表单格式的(如json格式),可以通过request.data获取 print("request.data: %s" % request.data) # args是用来提取url中的参数(查询字符串) city = request.args.get("city") return "hello name=%s, age=%s, city=%s, name_li=%s" % (name, age, city, name_li)if __name__ == '__main__': app.run(debug=True)
发送表单数据
获取 url 后面接的参数
发送json格式数据
json 就是像Python Dict 的字符串类型
上传文件
已上传的文件存储在内存或是文件系统中一个临时的位置。你可以通过请求对象的 files 属性访问它们。每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的 Python file 对象,但它还有一个 save() 方法,这个方法允许你把文件保存到服务器的文件系统上。这里是一个用它保存文件的例子:
# coding:utf-8from flask import Flask, requestapp = Flask(__name__)@app.route("/upload", methods=["POST"])def upload(): """接受前端传送过来的文件""" file_obj = request.files.get("pic") if file_obj is None: # 表示没有发送文件 return "未上传文件" with open("./test.png","wb") as f: data = file_obj.read() f.write(data) return "上传成功"if __name__ == '__main__': app.run(debug=True)
secure_filename 获取文件在客户端的名字
如果你想知道上传前文件在客户端的文件名是什么,你可以访问 filename 属性。但请记住, 永远不要信任这个值,这个值是可以伪造的。如果你要把文件按客户端提供的文件名存储在服务器上,那么请把它传递给 Werkzeug 提供的 secure_filename() 函数:
from flask import Flask, requestfrom werkzeug.utils import secure_filenameapp = Flask(__name__)@app.route("/upload", methods=["POST"])def upload(): """接受前端传送过来的文件""" # file_obj = request.files.get("pic") 获取文件对象 file_obj = request.files["pic"] if file_obj is None: # 表示没有发送文件 return "未上传文件" file_obj.save('./real_name:'+ secure_filename(file_obj.filename)) # 绝对路径保存到指定的文件目录下面 /home/wen/App/ return "上传成功"if __name__ == '__main__': app.run(debug=True)
保存到绝对路径