目录
  • 1、request请求对象
    • 1.1request请求对象的使用

前言:

一个完整的 http 请求,包括客户端向服务端发送的 request 请求和服务器端发送的 response 响应。为了能方便的访问获取请求及响应报文信息,flask 框架提供了一些内建对象,下面就来说一下 flask 针对请求提供的内建对象request

1、request请求对象

request请求对象封装了从客户端发来的请求报文信息,我们能从request对象上获取请求报文中的所有数据。 其大部分功能是由依赖包werkzeug完成的,flask 做了一些特定功能的封装,形成了request请求对象。

1.1request请求对象的使用

 导入flask包中的request对象,就可以直接在请求函数中使用该对象了。

from flask import request

@app.route('/user', methods=['get', 'post'])

def user():

    if request.method == 'post':

        user_name = request.form['user_name']

        return 'user :{} add success!'.format(user_name)



    else:

        user_id = request.args.get('user_id', 0)

        return 'hello user:{}!'.format(user_id)

上述代码中:request对象中的method变量可以获取当前请求的方法,即get、post、put、delete等;form变量获取post请求form-data表单中的数据,本质是一个字典,如果提交的表单中没有user_name,则会返回 400 bad request 的错误,当然也可以使用异常捕获机制处理。request.args.get()方法获取的是get请求的url中的参数(问号?之后的部分),第一个参数指定获取的 url 参数的 key,第二个参数指定默认值,当 key 不存在时,则返回默认值。

如下:

get请求

post请求

除此之外,请求报文中的其他信息都可以通过 request 对象提供的属性和方法获取,常用的部分如下:

  • url:请求的 url
  • args:werkzeugimmutablemultidict 对象,存储解析后的查询字符串,可通过字典方式获取键值
  • blueprint:当前蓝本的名称
  • cookies:一个包含所有随请求提交的 cookies 的字典
  • data:包含字符串形式的请求数据
  • endpoint:于当前请求相匹配的端点值
  • files:werkzeug multidict 对象,包含所有上传文件
  • form:werkzeug immutablemultidict 对象,包含解析后的表单数据
  • values:werkzeugcombinedmultidict 对象,结合了 args form 属性的值
  • get_data(cache=true,as_text=false,parse_from_data=false):获取请求中的数据,默认读取为字节字符串(bytestring),as_text为true则返回解码后的unicode字符串
  • get_json(self,force=false,silent=false,cache=true):作为 json 解析并返回数据,如果 mime 类型不是 json,返回 none(除非 force 设为 true);解析出错则抛出werkzeug提供的 badrequest 异常(如果未开启调试模式,则返回400错误响应),如果 silent 设为 true 则返回 none;cache 设置是否缓存解析后的 json 数据
  • headers:werkzeugenvironheaders 对象,包含请求的头部字段
  • json:包含解析后的 json 数据,内部调用 get_json(),可通过字典的方式获取键值
  • method:请求的 http 方法
  • referrer:请求发起的源 url,即 referer
  • scheme:请求的url模式(http 或 https)
  • user_agent:用户代理(user agent),包含了用户的客户端类型,操作系统类型等信息

到此这篇关于 flask  request 对象详情的文章就介绍到这了,更多相关 flask  request 对象内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!