首页 > 其他分享 >Flask请求扩展与g对象

Flask请求扩展与g对象

时间:2024-03-04 21:23:49浏览次数:11  
标签:return 请求 Flask 扩展 app request template print def

请求扩展

1 before_request

任意一次请求来了,都会执行这个装饰器装饰的函数(与Django中process_request类似)

@app.before_request
def before_request():
    print('请求来了')

2 after_request

任意一次请求走了,就会执行这个装饰器装饰的函数(与Django中process_response类似)

@app.after_request
def after_request(response):
    print('请求走了')
    return response

3 before_first_request(Flask新版本已去除)

在第一次请求时


teardown_request

每一个请求之后绑定一个函数,即使遇到了异常。
一般用来记录日志
不能做统一异常处理

@app.teardown_request
def teardown_request(e):
    # 通过判断e是否为空,记录日志
    print(e)  # 出了异常,e就是异常对象,如果没有异常,e就是None
    print('来了老弟')
    if e:
        return '出异常了'

4 errorhandler

监听http响应码:只要响应码对应,就会执行对应的函数
路径不存在时404,服务器内部错误500

@app.errorhandler(404)
def error_404(error):
    print('----',error)
    return render_template('404.html')

@app.errorhandler(500)
def error_500(error):
    print('----',error)
    return render_template('500.html')

5 template_global全局标签

# template_global 全局标签,所有页面都可以用
@app.template_global()
def add(a1, a2):
    return a1 + a2

5 template_filter全局过滤器

# template_filter 全局过滤器
@app.template_filter()
def db(a1, a2, a3):
    print(a1)
    return a1 + a2 + a3

g对象

作用

g对象是 global 全局的意思。每次发送请求,这个g会一直存在,可以设置值和取值
g本质是为了避免request对象放值导致的数据污染问题,以后都用g放入值和使用


使用

# 导入
from flask import Flask, g

app = Flask(__name__)
app.secret_key = 'asdfasdf'


@app.before_request
def before():
    # jwt认证---》认证通过--》request.user=当前登录用户
    # g.user=当前登录用户
    request.methods='张三'
    g.name = '张三'  # 放入了


@app.after_request
def after(response):
    print('----', g.name)
    return response


def showName():
    print('showName', g.name)


@app.route('/', methods=['GET'])
def index():
    # 取出g中得值
    print(g.name)
    showName()
    return '欢迎你'


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

标签:return,请求,Flask,扩展,app,request,template,print,def
From: https://www.cnblogs.com/wellplayed/p/18052715

相关文章

  • Flask之闪现(flash)
    作用在某次请求中,有些数据,可以放在闪现中以便下次请求,从闪现中取出来使用。特点:取一次就没了,下次再取就是空的谁(浏览器)放的,谁(浏览器)才能取到实际上放了session中了使用方式导入fromflaskimportFlask,flashapp=Flask(__name__)#需要配置秘钥app.secret_key......
  • flask_04days
    cbv源码分析 执行流程#1app.add_url_rule('/user','user',UserView.as_view('user'))-第三个参数,放视图函数的内存地址---》UserView.as_view('user')是函数内存地址#2UserView中找类方法as_view--》返回值是一个函数内存地址-UserView中没有-MethodVi......
  • ruoyi-vue axios通过接口请求wav、mp3音频二进制数据
    实现方式在axios请求中注明responseType:'blob',headers的Accept:'audio/wav'不清楚要不要写,我加上了(请求接口)在接口返回值中,使用Blob的构造方法将数据转换成Blob对象(封装Blob对象&形成URL)将得到的Blob对象通过URL.createObjectURL(audioBlob)形成url,该url类似于bl......
  • [转帖]HTTP 请求头的 Referrer-Policy 到底是什么?
    https://juejin.cn/post/7005209278592073758  当我们打开Chrome的网络面板,查阅它的任意一个请求,可以看到,请求中有一个General选项。除了第四个,前三个我们都很熟悉。今天我们就来介绍一下第四个到底是什么。ReferrerPolicys 是HTTP的一个请求头,通常结合着 R......
  • 基于EKF扩展卡尔曼滤波的传感器网络目标跟踪matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022a 3.算法理论概述       随着传感器网络技术的不断发展,目标跟踪作为其核心应用之一,在军事、民用等领域中得到了广泛的关注。扩展卡尔曼滤波(EKF)作为一种有效的非线性滤波方法,被广泛应用于传感器网络......
  • XDR(eXtended Detection and Response,扩展的安全检测及响应)
    一、什么是XDR首先从EDR(EndpointDetection&Response)说起,即端点安全检测及响应;还有NDR(NetworkDetection&Response),即网络安全检测及响应(类似NTA,不再赘述);以及MDR(ManagedDetectionandResponse),即管理安全检测及响应,也就是安全运维服务。于是,什么是XDR?就是将这些各种各样的DR综......
  • python接口自动化系列(11):断言请求结果
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标解析测试数据中要断言的字段,进行断言,判断用例是否成功。 添加工具模块utils下添加assert_tool.py#!/usr/bin/envpython#-*-coding:utf-8-*-#@Author:韧#@wx:ren168632201#@Blo......
  • python接口自动化系列(09):发送http请求
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标发送http请求,获取服务器响应内容 关于被测试接口配套练习环境(含相关接口):https://www.cnblogs.com/uncleyong/p/17165143.html 安装模块requests提供了方便易用的HTTP请求功能pipinstall......
  • Asp.Net Core Web Api 对于ControllerBase的一些个人习惯扩展
    ApiResponse类是我定义的返回基类,Code我定的是0成功不等于0失败,对于Data我习惯于写object类型,不习惯写泛型,我习惯于给ControllerBase写扩展来定义我的返回方法,在写一个类继承于ControllerBase让后控制器再去继承这个类,也是可以的对于GetUserCode和GetRoleCode是方便获取to......
  • 谷歌扩展V2升级V3一些功能的汇总
     扩展的页面通信service-worker.js(原v2版本的background.js)与popup页面的通信popup页面不能直接使用缓存(cookie等),必须在service-worker等页面使用,使用sendMessage与service-worker通信,在service-worker获取到缓存后再回传给popup页面js页面与扩展的通信:js插件里使用wind......