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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

flask中获取request的参数的方法的更多相关文章

  1. Spring中获取request的几种方法,及其线程安全性分析

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  2. [No000016E]Spring 中获取 request 的几种方法,及其线程安全性分析

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  3. Spring中获取request的几种方法,及其线程安全性分析(山东数漫江湖)

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  4. struts2 action中获取request session application的方法

    共四种方式: 其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...

  5. Action类中获取request等对象的方法

    struts2中的action类中,SevletActionContext可以获取

  6. JS中获取URL的参数的方法

    这里,我学习的是使用正则的方法来获得URL的参数 函数的方法如下: <a href="www.baidu.com">百度</a> <script sr ...

  7. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  8. 第三篇 Flask 中的 request

    第三篇 Flask 中的 request   每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前 ...

  9. SpringMvc中获取Request

    Controller中加参数 @Controller public class TestController { @RequestMapping("/test") public v ...

随机推荐

  1. Java ——对象 类 方法重载 构造方法 封装 内部类

    本节重点思维导图 快捷键 生成代码:alt+shift+s 提取变量:alt+shift+L 快速复制行:alt+ctrl+向上或向下的箭头 删除行:ctrl+d 类:对同一种事物共同属性和行为的抽象 ...

  2. ETROBOT——审题

    参加了比赛,但是总要理解比赛相关的东西,发现以前瞎写的东西有人看,并且还有挺多人看的,所以打算继续在这里面,做记录. 源: http://www.etrobo.jp/2018/gaiyou/intro ...

  3. 应用安全-Web安全-SSRF攻防

    原理 服务器: IP:.XX.191.14 nc -l -p 客户端: http://xx.map.xx.com/maps/services/thumbnails?width=215&heig ...

  4. Vue路由注意事项

    一.vue中路由的使用 1.定义组件 <template> <div class="hello"> <h1 @click="info&quo ...

  5. WPF使用Mutex创建单实例程序失效

    vs2019 1.引入名称空间 using System.Threading; using System.Runtime.InteropServices; 2.导入dll并声明方法 [DllImpor ...

  6. LaTex中集合关系的表示

    集合的大括号: \{ ... \} \(\{ ... \}\) 集合中的"|": \mid \(\mid\) 属于: \in \(\in\) 不属于: \not\in \(\not ...

  7. JAVA总结--jvm

    VM,Virtual Machine 即虚拟机,指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. JVM,Java Virtual Machine 即Java虚拟机, ...

  8. Java-JavaMail邮件开发(1)Java Mail

    1.仅使用Java Mail 使用163邮箱作为代理服务器: 引入依赖: <dependency> <groupId>com.sun.mail</groupId> ...

  9. SpringBoot-Vue实现增删改查及分页小DEMO

    前言 主要通过后端 Spring Boot 技术和前端 Vue 技术来简单开发一个demo,实现增删改查.分页功能以及了解Springboot搭配vue完成前后端分离项目的开发流程. 开发栈 前端 开 ...

  10. 《剑指offer》面试题16 反转链表 Java版

    (输入链表的头节点,反转链表) 书中方法:对于一个链表,我们只能从头往后遍历,如果要反转,我们需要更改当前节点的next域指向前一个节点,此时链表断开,为了能继续修改下一个节点的next域,我们还要维 ...