flask中获取request的参数的方法

request请求总体分为两类:

1.get请求 

访问时会在地址栏直接显示参数不安全,且参数大小比较小。

2.post请求 

参数不显示在地址栏,一般用户注册、登录都通过post请求完成。

flask获取参数方式:

request.form.get("key", type=str, default=None) 获取表单数据

request.args.get("key") 获取get请求参数

request.values.get("key") 获取所有参数

本文主要介绍以上三种方式,其次也有获取解析json数据格式,request.get_json(),这里不进行详细介绍了。

 

下面直接开始试验,以用户注册为例:

需要获取四个参数:用户手机号、密码、校验密码、手机验证码

mobile = request.form.get("mobile")

password = request.form.get("password",type=str,default=None)

password_repeat = request.form.get("password_repeat",type=str,default=None)

mobile_code = request.form.get("mobile_code",type=str,default=None)

整体代码截图

分别通过3中方式获取参数:request.form, request.args,request.values

postForm= request.form

getArgs= request.args

postValues= request.values

 

试验:

试验1::Get请求:将参数直接拼接在url上,以下均以postman, pycharm调试窗截图说明。

url:http://127.0.0.1:5000/register?mobile=18817366807&password=123456&password_repeat=123456&mobile_code=111111

postman get 发送请求配置1
pycharm debuger 窗口变量截图1

      在get请求下,request.form无法获取参数,其他两者都可以。

试验2:通过postman将get请求改为post请求

postman post发送请求配置2
pycharm debuger 窗口变量截图2

        在post请求下,request.form无法获取有效参数,其他两者都可以,当然content-type/form-data 发生改变,当然这里可也简单理解为该请求为伪post请求。

试验3:post请求,在body内创建form-data参数成员

POST /register?mobile=18817366807&password=123456&password_repeat=123456&mobile_code=111111 HTTP/1.1

Host: 127.0.0.1:5000

Cache-Control: no-cache

Postman-Token: 31fff394-653b-ac72-6011-313518d4c2eb

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="formmember"

form

------WebKitFormBoundary7MA4YWxkTrZu0gW--

postman post发送请求配置3
pycharm debuger 窗口变量截图3

        三者全部获得参数值,最让人困惑的是postForm获得了mobile等值。此外需要注意的是postValues中含有全部的参数。

试验4:post请求,删除get部分参数

postman post发送请求配置4
pycharm debuger 窗口变量截图4

       这次的结果倒是符合预期,postForm获得form表单数据,postValues也能获取到。

试验5:补充实验

postman post发送请求配置5
pycharm debuger 窗口变量截图5

综上,可以得出结论,request.form.get("key", type=str, default=None) 获取表单数据,request.args.get("key") 获取get请求参数,request.values.get("key") 获取所有参数。推荐使用request.values.get().



作者:码农的happy_life
链接:https://www.jianshu.com/p/ecd97b1c21c1
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
posted @ 2019-01-17 18:36  年轻人——001  阅读(28082)  评论(0编辑  收藏  举报