首页 > 编程语言 >python-flask 技能点使用-01 请求钩子

python-flask 技能点使用-01 请求钩子

时间:2023-05-15 10:23:25浏览次数:29  
标签:01 请求 python 钩子 after request flask before

  • 场景分析

         熟悉java开发的小伙伴应该了解Spring全生命周期以及配套的一系列方法,熟悉Vue开发的小伙伴们应该也熟悉Vue生命周期管理以及一系列方法,使用过Servlet的小伙伴也应该了解其生命周期的概念,本人之前一直从事java开发,现在因为业务需要需要学习python开发,目前如下几个问题

    • web请求用户登录验证拦截
    • 审计日志功能

    之前使用java开发我们可以使用拦截器或者过滤器来实现,审计日志我们可以使用AOP面向切面的方式来实现,最简单的可以定义一个注解,通过面向注解的AOP切面实现,目前业务也是基于Web开发的,不过后端开发语言换成了python,之前只有零星学习python的经验,在git上寻找了许久开源的代码都没有合适的,最终个人对比了下决定使用轻量级的Flask框架,所以面临如何解决以上问题

  • 请求钩子

  在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如在请求开始时建立数据库连接,在请求开始时根据需求进行权限校验,在请求结束时指定数据的交互格式等;为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子;请求钩子是通过装饰器的形式现,Fask支持如下四种请求钩子:

    •   请求钩子类型
      • before_first_request:
        •   在处理第一个请求前执行
        •   其只会执行一次
        • @app.before_first_request
          def before_first_request():
              print('before_first_request')
      • before_request:
        •   在每次请求前执行
        •   如果某修饰的函数中返回了一个响应,视图函数将不再被调用
        •   返回None则继续往后执行
        • @app.before_request
          def before_request():
              url = request.url
              print('before_request url : ', url)
      • after_request:
        •   如果没有抛出错误在每次请求后执行
        •   接受一个参数(视图函数做出的响应)
        •   在此函数中可以对响应值在返回之前做最后一步的修改处理
        •   需要将参数中的影响在此参数中返回
        • @app.after_request
          def after_request(response):
              print('after_request')
      •  teardown_request: 
        •   在每次请求后执行
        •   接受一个参数“错误信息”,如果有相关错误抛出
        •   需要注意在调试模式,即debug=True时不生效
        • @app.teardown_request
          def teardown_request(exception):
              print('teardown_request:{}'.format(str(exception)))
    • 请求钩子类型执行顺序

       before_first_request -- before_request1 -- before_request2 -- view() -- after_request1 -- after_request2

 

 

标签:01,请求,python,钩子,after,request,flask,before
From: https://www.cnblogs.com/dduo/p/17401046.html

相关文章

  • 如何有技巧地运用Python 语言?
    1.三元运算符 三元运算符是if-else语句的简写。语法是value_if_trueifconditionelsevalue_if_false。三元运算符是一行代码,可以替代多行if-else语句,使你的代码更加简洁。 a=5 b=10 max=aifa>belseb #value_if_trueifconditionelsevalue_if_fa......
  • Python爬虫代理使用完整代码
    使用代理可以带来以下好处:1.隐藏真实IP地址:使用代理可以隐藏你的真实IP地址,从而保护你的隐私和安全。2.防止封禁:有些网站会限制同一IP地址的访问频率,使用代理可以避免被封禁。3.提高访问速度:使用代理可以让你的请求从代理服务器发出,从而减轻本地网络负担,提高访问速度。4.......
  • flask(六)---flask上传文件
    文件上传是很常见的功能,但这过程中却有很多技术环节需要学习文件类型,大小限制多文件上传文件名称安全检查1.文件大小限制出于资源考虑,不能不对用户上传的文件大小进行限制,这个在flask中实现非常简单fromflaskimportFlask,Requestapp=Flask(__name__)app.config[......
  • Python中字典的用法
    字典用于存放具有映射关系的数据。相当于保存了两组数据,其中一组数据是关键数据,被称为key;另一组数据可通过key来访问,被称为value。字典相当于2字段表格,但value值可通过列表的形式扩展data={"李太白”:[23742364782642342323234,28,"男","青莲居士","唐朝"],"姜子牙......
  • Python垃圾回收机制
    什么是垃圾回收机制:垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间为什么要用垃圾回收机制:程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是一......
  • ABB工业中央控制器PCD244A101
    W;①⑧0③0①7775⑨ABB工业中央控制器PCD244A1013BHE042816R0101/ZUBA003203R0001/PEC80-SCC  REV.B,PCD231B3HHE025541R0101PCD231B1013BHE025541R0101PCD231B1013BHE025541R0101PCD232A3BHE022293R0101PCD235B11013BHE032025R1101PCD232A1013BHE022293......
  • Python3网络爬虫浓缩系列
    本文参考与Jack-Cui 的python3网络爬虫入门系列 领悟:python的灵活性远远超过了我的想象我们没有必要写一样的代码,但是我们可以学习不同的思路!!!!Python3网络爬虫(一):利用urllib进行简单的网页抓取#-*-coding:UTF-8-*-fromurllibimportrequestimportchardetif__name__......
  • <Python全景系列-1> Hello World,1分钟配置好你的python环境
    《从此开始:1分钟配置好你的python环境》欢迎来到我们的系列博客《Python360全景》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。这是......
  • Python学习之十一_Windows获取硬件信息
    Python学习之十一_Windows获取硬件信息简介网上找了一些方法简单整理了下,可以快速获取部分信息包含机器名称等.以及序列号相关部分学习来源:https://blog.51cto.com/u_15354476/5339864源码importpsutilimportwmiimportplatform#系统的内存利用率free=st......
  • NI LabVIEW OPC Server OPC通讯IO服务器,通讯西门子S720030040012001500SMART通讯三菱F
    NILabVIEWOPCServerOPC通讯IO服务器,通讯西门子S720030040012001500SMART通讯三菱FXPLCQPLC台达PLC欧姆龙PLC等全系列PLCDSCModleNIDSCOPC工具包ID:3460671157181864......