Flask - request、response - 请求、响应

本文深入探讨了Flask框架中的request和response处理,包括获取请求IP、不同类型的返回数据形式,以及request的扩展如@before_request、@after_request等装饰器的使用。同时,介绍了中间件的实现方式和请求上下文的源码分析,帮助理解Flask的请求流程。
摘要由CSDN通过智能技术生成

目录

一、request 请求相关属性

二、 response、后台return的数据形式

2-1 基于return方式 生成的response对象 的修改操作

三、request 请求扩展

3-1 @before_request - 收到请求前执行绑定函数

3-2 @after_request - 每个请求后执行绑定函数,若请求异常不执行

3-3 @before_first_request - 第一次请求时触发函数执行

3-4 @teardown_request - 每个请求后执行绑定函数,若请求异常照常执行

3-5 @errorhandler - 根据错误状态码自定义返回

3-6 @template_global - 模板的标签使用

3-7 @template_filter - 模板过滤器使用

四、中间件

4-1 中间件实现方式

4-2 源码分析

五、请求上下文源码分析 - 请求流程解析


一、request 请求相关属性

  • request.method  - 请求的方式
  • request.args  - get方式提交的数据,即URL内包含的数据信息
    • request.args.get('key', )
  • request.form  - Post方式提交的数据,字典形式存储获取
  • request.values - CombinedMultiDict 字典形式存储,内容是formargs。 可以使用values替代form和args。
  • request.cookies  - 请求的cookies,类型是dict
  • request.stream - 在可知的mimetype下,如果进来的表单数据无法解码,会没有任何改动的保存到这个·stream·以供使用。很多时候,当请求的数据转换为string时,使用data是最好的方式。这个stream只返回数据一次。
  • request.headers - 请求头,字典形式,结果以list形式返回
  • request.data - 包含了请求的数据,并转换为字符串,除非是一个Flask无法处理的mimetype。
  • 用户请求路径获取方式(例如 :http://www.example.com/myapplication/page.html?x=y )
  • request.files - MultiDict,带有通过POST或PUT请求上传的文件。
    • obj = request.files['the_file_name']
      obj.save('/var/www/uploads/' + secure_filename(f.filename))

       

  • request.environ - WSGI隐含的环境配置。
  • request.is_xhr  - 如果请求是发送到一个实际的模块,则该参数返回当前模块的名称。这是弃用的功能,使用blueprints替代。
  • request.blueprint  - 蓝图名字
  • request.endpoint - endpoint匹配请求,这个与view_args相结合,可是用于重构相同或修改URL。当匹配的时候发生异常,会返回None。
  • request.json - 如果mimetypeapplication/json,这个参数将会解析JSON数据,如果不是则返回None。 
    可以使用这个替代get_json()方法。
  • request.max_content_length - 只读,返回MAX_CONTENT_LENGTH的配置键。
  • request.module  - 如果请求是发送到一个实际的模块,则该参数返回当前模块的名称。这是弃用的功能,使用blueprints替代。

1-1 基于 request 的 ip 获取

Python Flask使用Nginx做代理时如何获取真实IP

Nginx反向代理 + Flask + gunicorn 架构解决获取用户真实ip问题


  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值