首页 > 其他分享 >Flask - request对象

Flask - request对象

时间:2022-12-23 14:36:23浏览次数:31  
标签:__ name form Flask app request 对象 json

一、前言

参考 https://www.cnblogs.com/poloyy/p/14995215.html

1、Flask 中很重要的 request 对象

  • 浏览器访问服务端时,向服务端发送请求
  • Flask 程序使用 request 对象描述请求信息
  • 当你想获取请求体、请求参数、请求头数据的时候,就需要靠 request 对象了

2、真实使用场景

浏览器访问服务端,需要将相应的数据发送给服务端,可能有如下场景:

  • 通过 URL 参数进行查询,浏览器需要将查询参数发送给服务端
  • 提交表单 form 进行查询,浏览器需要将表单 form 中的字段发送给服务端
  • 上传文件,浏览器需要将文件发送给服务端
  • 通过 JSON 格式的请求体进行请求,一般是 post 请求

服务端收到将客户端发送的数据后,封装形成一个请求对象,在 Flask 中,请求对象是一个模块变量 flask.request

 form、args、values、json 都是获取 http 请求的请求数据的属性,只不过请求体类型不同

二、获取url请求参数的例子

1、完整代码

from flask import Flask, request
app = Flask(__name__)

@app.route('/query')
def query():
    return {"name":request.args['name'],"age":request.args['age']}

@app.route('/query2')
def query2():
    print('args=',request.args)
    print('form=',request.form)
    return 'form'

@app.route('/query3')
def query3():
    print('args=',request.args)
    print('json=',request.json)
    return 'json'

@app.route('/query4')
def query4():
    return {"name":request.values['name'],"age":request.values['age']}

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

 2、请求结果

1)/query

query后面可以随意拼接任何参数,代码中只写了获取返回参数=name和age的值

 2)/query2

用 form 属性的话得到是一个空字典哦,控制台输出结果如下:

 

 3)/query3

用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 url 请求参数哟!控制台输出结果如下:

 

 4)/query4

可以看到 values 属性也能拿到 url 请求参数哦

 三、获取表单参数的例子

1、完整代码

from flask import Flask, request
app = Flask(__name__)

@app.route('/addUser',methods=['POST'])
def check_login():
    return {"name:":request.form['name'],"age":request.form['age']}

@app.route('/addUser2',methods=['POST'])
def check_login2():
    print('form=',request.form)
    print('args=',request.args)
    return "form"

@app.route('/addUser3',methods=['POST'])
def check_login3():
    print('form=',request.form)
    print('json=',request.json)
    return "json"

@app.route('/addUser4',methods=['POST'])
def check_login4():
    return {"name":request.values['name'],"age":request.values['age']}

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

2、请求结果

1)addUser

2)addUser2

 用 args 属性的话得到是一个空字典哦,控制输出结果如下:

 

3)addUser3

 用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 form-data 哟!控制台输出结果如下:

 

4)addUser4

可以看到 values 属性也能拿到 form 表单提交的数据哦

四、获取json数据的例子 

1、完整代码

from flask import Flask, request
app = Flask(__name__)

@app.route('/addJson',methods=['POST'])
def check_login():
    return {"name:":request.json['name'],"age":request.json['age']}

@app.route('/addJson2',methods=['POST'])
def check_login2():
    print('json=',request.json)
    print('args=',request.args)
    return "json"

@app.route('/addJson3',methods=['POST'])
def check_login3():
    print('json=',request.josn)
    print('form=',request.form)
    return "json"

@app.route('/addJson4',methods=['POST'])
def check_login4():
    print('json=',request.json,type(request.json))
    print('values=',request.values)
    return {"name":request.json['name'],"age":request.json['age']}

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

2、请求结果

1)addJson

2)addJson2

 用 args 属性的话得到是一个空字典哦 ,控制台输出结果如下:

3)addJson3

用 form 属性的话得到是一个空字典哦 ,控制台输出结果如下:

4)addJson4

当你的请求体是 Json 时,是不能通过 values 来获取请求数据哦!!request.json 拿到的就是 Json 格式的请求体,并且自动转换成字典了哦!控制台输出结果如下: 

 

标签:__,name,form,Flask,app,request,对象,json
From: https://www.cnblogs.com/Chilam007/p/16999310.html

相关文章

  • request请求头中出现Provisional headers are shown的解决过程
    request请求头中出现Provisionalheadersareshown的解决过程一.异常现象壹哥在利用微服务构建sso单点登录的时候,写了一个login接口,然后就在浏览器中进行测试,结果发出请求......
  • git系列---【解决git clone时fatal: unable to access ‘https://gitee.com/XXX.git/
    1.常见原因:无权访问,可能是本机录入的gitee账号和现在要进行clone的gitee账号不同导致的权限问题2.解决方法:1)控制面板--用户账户--凭证管理器--windows凭据2)点击编辑更......
  • 1.requests模块的基本使用.ipynb
    -什么是requests模块?-Python中封装好的一个基于网络请求的模块。-requests模块的作用?-用来模拟浏览器发请求-requests模块的环境安装:-pipinstallreques......
  • IOC 中 bean 标签和管理对象细节
    1、bean标签作用:用于配置对象让spring来创建的。默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。属性:id:给对象在容器......
  • Flask request接收参数
    request导入方式request导入方式fromflaskimportrequest request.form:用于接收表单参数request.args:用于接收GET参数request.json:用于接收JSON参数request.values:获......
  • Flask 动态路由转换器
      fromflaskimportFlaskapp=Flask(__name__)@app.route('/user/<name>')defshow_user(name):return'Mynameis%s'%[email protected]('/age/<i......
  • JS中的Object、Proxy、Reflect以及Promise对象
    一、创建对象的方式字面量leta={}new关键字letb=newObject()Object.create()方法letc=Object.create(Object.prototype)二、原型链代码......
  • 记一次云主机如何挂载对象存储
    @TOC前言随着云计算的发展,公有云成为中小型企业建设业务系统的首选,而对象存储则是存储里面必不可少的存储产品,对象存储不仅可以提供海量、高可靠、安全的服务,而且价格相对普......
  • 记一次云主机如何挂载对象存储
    @TOC前言随着云计算的发展,公有云成为中小型企业建设业务系统的首选,而对象存储则是存储里面必不可少的存储产品,对象存储不仅可以提供海量、高可靠、安全的服务,而且价格相对普......
  • Python requests库指定IP请求,并使用HTTPS证书验证
    背景运维同学通过网关平台下发nginx配置文件,下发的过程是先灰度发布,发灰度机器,然后需要验证域名的请求是否正常,然后在下发其他生产机器,但是验证过程是人为操作,这就不可避......