flask学习笔记-获取请求参数
视图函数很可能要接收从前端传来的参数,并且还需要返回响应体、状态码、响应头等信息
如何实现呢?
1)首先从前端获取信息:
就是Flask中表示当前请求的request对象,request对象中保存了一次HTTP请求的一切信息

request.args 与 request.form 的区别就是:
request.args 是获取 url 中的参数
request.form 是获取 form 表单中的参数
request.values 获取 formdata 数据和 URL 中的数据(如果 url 和 form 中的 Key 重名的话,form 中的同名的 key 中 value 会被 url 中的 value 覆盖)
request.data 之 如果处理不了的就变成字符串儿存在 data 里面
request.files 如果遇到文件上传的话,request.files 里面存在的是你上传的文件,但是 flask 在这个文件的操作中加了一定的封装,让操作变得极为简单
request中包含了前段发送过来的所有请求数据
通过request.form可以直接提取请求体中的表单格式的数据,是一个类字典的对象
通过get方法只能拿到多个同名参数的第一个
1、示例从请求体获取内容:
通过用postman发送表单格式数据,模拟前端。

发送一个表单数据后,前端Postman显示出
这句,编译器中显示如下:
此时,可以发现,用表单发送的数据,用request.data是接收不到的,数据存放在request.form中。
当我们发送非表单数据,如json格式数据时

此时postman返回数据是none,说明非表单数据request.form是接收不到的, request.data可以接收
显示如下:
可以看到数据不做任何处理,得到的是字节流,并没有以字符串的形式打印出来,这时,若想按字符串显示,需要把数据按utf-8解码。修改成下面这句:
此时,结果按照字符串形式显示,转义字符也起到了效果:
2、 获取查询参数args
要获取查询字符串中的信息,则上述方式无法实现。
方式: 使用request中 args 下面的方法,修改程序如下:
将
修改为:
即可。
测试运行:

运行成功,取到查询字符串中的参数。
3、表单中多个数据的获取
在postman中,输入多个name,用上述方式,只能取到一个值,如:

这种情况,想要获取全部的name,则需要使用到 request.form.getlist,修改程序如下:
测试运行:

用这种方式,无论输入多少个同名人名,我们都可以正常捕获。
4、获取文件files
示例:
注意:前端发送文件名必须与后端接收的文件名一致!
测试:

本地也会出现demo1.png的图片。
