返回顶部
首页 > 资讯 > 后端开发 > Python >Python中Flask请求扩展与中间件的示例分析
  • 915
分享到

Python中Flask请求扩展与中间件的示例分析

2023-06-15 11:06:03 915人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

小编给大家分享一下python中flask请求扩展与中间件的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、请求扩展1.before_request作用: 类比Django中间件中的process_request

小编给大家分享一下pythonflask请求扩展与中间件的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一、请求扩展

1.before_request

作用: 类比Django中间件中的process_request,在请求到来执行路由函数之前先执行. 但是如果有多个顺序是从上往下执行.

应用: 基于它做用户登录认证

注意: 如果before_request的返回值不是None的清空下, 返回的而是别的值, 那么后续的请求都不会执行,本次请求直接返回, 如果定义了after_request那么会接着它执行, 最终本次请求响应结束.

@app.before_requestdef process_request(*args,**kwargs):    if request.path == '/login':        return None    user = session.get('user_info')    if user:        return None    return redirect('/login')

2.after_request

作用: 类比djanGo中间件中的process_response,如果请求没有出现异常的情况下, 会在请求返回return之前执行. 但是如果有多个顺序是从下往上执行.

@app.after_request  # 后执行def process_response1(response):    print('process_response1 走了')    return response@app.after_request  # 先执行def process_response2(response):    print('process_response2 走了')    return response

3.before_first_request

作用: 项目启动起来接收到第一次请求时执行.

应用: 项目初始化用来保证以后项目只要不重启就不再继续执行.

@app.before_first_requestdef first():    print('我的第一次')

4. teardown_request

作用: 在每一个路由函数执行完毕之后执行,即使遇到了异常也会执行. (提示: 返回reutrn没有任何的效果, 不能控制返回的结果)

应用: 记录日志

@app.teardown_request  def ter(e):  # e就是上一个路由函授执行过程中出现被捕获的异常信息.    print(e)    print('我是teardown_request ')

5.errorhandler

作用: 绑定错误的状态码进而可以捕获服务器的错误, 并返回对应的错误页面.

@app.errorhandler(500)def error_500(arg):    return render_template('error.html', message='500错误')@app.errorhandler(404)def error_404(arg):    return render_template('error.html', message='404错误')

6.template_global

作用: 全局的标签, 在任意的html页面中就可以直接使用, 不需要在render_template中传递参数以后才能使用.

@app.template_global()def sb(a1, a2):    return a1 + a2# html页面中直接使用, 不需要传递参数.{{ sb(1,2) }}

7.template_filter

@app.template_filter()def db(a1, a2, a3):    return a1 + a2 + a3# html页面中直接使用, 不需要传递参数. 其中1传递给a1, 2传递给a2, 3传递给a3. (提示: Django中的过滤器最多只可以传递二个参数){{ 1|db(2,3) }}

总结:

重点掌握before_requestafter_request

注意有多个的情况,执行顺序

before_request请求拦截后(也就是有return值),response所有都执行

二、中间件

class Md(object):    def __init__(self, old_wsgi_app):        self.old_wsgi_app = old_wsgi_app    def __call__(self, environ, start_response):        print('开始之前')        ret = self.old_wsgi_app(environ, start_response)        print('结束之后')        return retif __name__ == '__main__':    # 1. 我们发现当执行app.run方法的时候,最终执行run_simple,最后执行app(),也就是在执行app.__call__方法    # 2. 在__call__里面,执行的是self.wsgi_app().那我们希望在执行他本身的wsgi之前做点事情。    # 3. 所以我们先用Md类中__init__,保存之前的wsgi,然后我们用将app.wsgi转化成Md的对象。    # 4. 那执行新的的app.wsgi_app,就是执行Md的__call__方法。    # 5. 最后把原来的wsgi_app替换为自定义的    app.wsgi_app = Md(app.wsgi_app)    app.run()

看完了这篇文章,相信你对“Python中Flask请求扩展与中间件的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网Python频道,感谢各位的阅读!

--结束END--

本文标题: Python中Flask请求扩展与中间件的示例分析

本文链接: https://lsjlt.com/news/279966.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中Flask请求扩展与中间件的示例分析
    小编给大家分享一下Python中Flask请求扩展与中间件的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、请求扩展1.before_request作用: 类比django中间件中的process_request...
    99+
    2023-06-15
  • Python Flask请求扩展与中间件相关知识总结
    一、请求扩展 1.before_request 作用: 类比django中间件中的process_request,在请求到来执行路由函数之前先执行. 但是如果有多个顺序是从上往下执行...
    99+
    2024-04-02
  • python中flask的示例分析
    这篇文章主要介绍python中flask的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.简介Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 ...
    99+
    2023-06-20
  • Vue2.0中http请求以及loading展示的示例分析
    这篇文章主要为大家展示了“Vue2.0中http请求以及loading展示的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue2.0中http请求以及...
    99+
    2024-04-02
  • PHP中DBA扩展的示例分析
    这篇文章主要介绍PHP中DBA扩展的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP的DBA扩展学习今天我们讲的 DBA 并不是传统的数据库管理员那个 DBA ,而是一个 PHP 中的巴克利风格数据库的扩...
    99+
    2023-06-15
  • ES6中正则扩展的示例分析
    这篇文章将为大家详细讲解有关ES6中正则扩展的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:1. RegExp构造函数ES5中,RegExp构造函数的参...
    99+
    2024-04-02
  • Ajax请求中异步与同步的示例分析
    这篇文章主要为大家展示了“Ajax请求中异步与同步的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ajax请求中异步与同步的示例分析”这篇文章吧。 ...
    99+
    2024-04-02
  • Jquery中Easyui验证扩展的示例分析
    这篇文章主要为大家展示了“Jquery中Easyui验证扩展的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Jquery中Easyui验证扩展的示例分析...
    99+
    2024-04-02
  • ES6中Array常用扩展的示例分析
    这篇文章主要介绍ES6中Array常用扩展的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!from方法将伪数组转换为数组let obj = { ...
    99+
    2024-04-02
  • ajax中多次请求的示例分析
    小编给大家分享一下ajax中多次请求的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们在用ajax请求数据时,可能会遇...
    99+
    2024-04-02
  • php中http请求类的示例分析
    这篇文章将为大家详细讲解有关php中http请求类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码:<php namespace dollar...
    99+
    2024-04-02
  • jQuery插件扩展操作的示例分析
    这篇文章将为大家详细讲解有关jQuery插件扩展操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:如下DEMO 展示了为dom扩展一个myshowHt...
    99+
    2024-04-02
  • ES6中对象数值扩展的示例分析
    这篇文章主要介绍了ES6中对象数值扩展的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对象数值扩展Object.is判断两个值是否完...
    99+
    2024-04-02
  • vue中axios请求拦截的示例分析
    这篇文章主要介绍vue中axios请求拦截的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!axios 简介axios 是一个基于Promise 用于浏览器和 nodejs 的...
    99+
    2024-04-02
  • 基于apicloud中AJAX请求的示例分析
    这篇文章主要介绍了基于apicloud中AJAX请求的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。get请求代码:api.ajax...
    99+
    2024-04-02
  • Tomcat中HTTP请求过程的示例分析
    这篇文章给大家分享的是有关Tomcat中HTTP请求过程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。初探Tomcat的HTTP请求过程前言:1.作为Java开发人员,大多都对Tomcat不陌生,由Ap...
    99+
    2023-06-02
  • express.js中间件的示例分析
    这篇文章将为大家详细讲解有关express.js中间件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。express的新开发人员往往对路由处理程序和中间件之间的区...
    99+
    2024-04-02
  • python中时间中间键的示例分析
    这篇文章主要介绍python中时间中间键的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!时间中间键的整理一下内容是对数据接口返回的时间节点处理方法很管用的哦import { Pipe,&n...
    99+
    2023-05-31
    python
  • ThinkPHP中钩子、行为扩展和插件机制的示例分析
    小编给大家分享一下ThinkPHP中钩子、行为扩展和插件机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!thinkphp是什么thinkphp属于一种...
    99+
    2023-06-06
  • Java插件扩展机制之SPI的示例分析
    这篇文章给大家分享的是有关Java插件扩展机制之SPI的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作