Flask 特殊装饰器
请求进入函数之前 before_request
- # -*- coding: utf-8 -*-
- from flask import Flask, session, redirect, request
- app = Flask(__name__)
- app.secret_key = '124gt'
- @app.before_request # 请求进入视图函数之前加载
- def be():
- print('before_request....')
- if request.path == '/login':
- return None # 直接略过
- if not session.get('user'):
- return redirect('/login')
- @app.route('/')
- def index():
- print('index')
- return 'index'
- @app.route('/login')
- def login():
- session['user'] = '111134'
- return '登陆成功'
- app.run(host='0.0.0.0', debug=True)

请求视图函数响应客户端之前加载 after_request
- @app.after_request # 请求视图函数响应客户端之前加载
- def af1(args):
- # print(args) # <Response 5 bytes [200 OK]>
- print('after_request...1')
- return args
- @app.after_request
- def af2(args):
- print('after_request...2')
- return args
- @app.after_request
- def af3(args):
- print('after_request...3')
- return args
- @app.route('/')
- def index():
- print('index')
- return 'index'
结果
- index
- after_request...3
- after_request...2
- after_request...1
- 192.168.31.1 - - [09/Dec/2019 06:31:22] "GET / HTTP/1.1" 200 -
before_request和after_request异常情况下返回情况
- @app.before_request # 请求进入视图函数之前加载
- def be1():
- print('before_request....1')
- @app.before_request
- def be2():
- print('before_request....2')
- return '错误' # flask 返回的是HTTPRESPONSE对象
- @app.before_request
- def be3():
- print('before_request....3')
- @app.after_request # 请求视图函数响应客户端之前加载
- def af1(args):
- # print(args) # <Response 5 bytes [200 OK]>
- print('after_request...1')
- return args # 返回的是Response对象
- @app.after_request
- def af2(args):
- print('after_request...2')
- return args # 返回的是Response对象
- @app.after_request
- def af3(args):
- print('after_request...3')
- return args # 返回的是Response对象
- @app.route('/')
- def index():
- print('index')
- return 'index'
结果
after全部返回
- before_request....1
- before_request....2
- after_request...3
- after_request...2
- after_request...1
- 192.168.31.1 - - [09/Dec/2019 06:39:30] "GET / HTTP/1.1" 200 -
页面错误 errorhandler(404)
- # 页面访问错误,找不到的时候,会执行这个装饰函数
- @app.errorhandler(404)
- def error(args):
- print(args)
- return '页面错误'
Flask 特殊装饰器的更多相关文章
- python装饰器 & flask 通过装饰器 实现 单点登录验证
首先介绍装饰器,以下是一段标注了特殊输出的代码.用于帮助理解装饰器的调用过程. import time def Decorator_one(arg1): info = "\033[1;31; ...
- Flask - 特殊装饰器 和 Flask工作结构模式(FBV, CBV)
目录 Flask - 特殊装饰器 和 Flask工作结构模式 @app.errorhandler() @app.before_request @app.after_request FBV和CBV Fl ...
- flask类装饰器
from flask import Flask,request,views from functools import wraps app = Flask(__name__) #自定义登录装饰器 de ...
- Flask 之装饰器有关
- 先记住一句话:自定义python装饰器时一定要记住使用@functools.wraps(func)修饰wrapper - 在Flask中使用装饰器遇到AssertionError: View fu ...
- flask之Flask特殊装饰器
flask_decorators.py ''' Flask中的特殊装饰器: (1)@app.before_request 请求到达视图函数之前,进行自定义操作,类似django中间件中的process ...
- Flask特殊装饰器
@app.errorhandler():重定义错误返回信息 @app.errorhandler(404) #监听多少写多少 def error404(message): return f"你 ...
- Flask(2)- 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)
一.装饰器的坑以及解决方法 1.使用装饰器装饰两个视图函数,代码如下 from flask import Flask, redirect, render_template, request, sess ...
- Flask蓝图Blueprint和特殊装饰器
Flask 中的 蓝图 Blueprint 不能被run的flask实例:相当于django中的app01 应用 蓝图作用:功能隔离 路由隔离 Blueprint就是 一个不能run的flask 蓝图 ...
- Python装饰器笔记
DRY(Don't Repeat Yourself)原则: 一般是指在写代码的时候尽量避免重复的实现.违反DRY原则导致的坏处很容易理解,例如维护困难,修改时一旦遗漏就会产生不易察觉的问题. 一.函数 ...
随机推荐
- 【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?【华为云技术分享】
1 概述 1.1 文章目的 本文主要想为研发PHP项目的企业或个人提供上云指导,通过本文中的示例项目 “workerman-todpole”,为开发者提供包括项目管理,代码托管,代码检查,编译构建,测 ...
- 🔥🔥🔥Spring Cloud进阶篇之Eureka原理分析
前言 之前写了几篇Spring Cloud的小白教程,相信看过的朋友对Spring Cloud中的一些应用有了简单的了解,写小白篇的目的就是为初学者建立一个基本概念,让初学者在学习的道路上建立一定的基 ...
- WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研
大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况. 另外,本文对实时光线追踪也进行了简要的 ...
- Python3 面向对象进阶1
目录 组合 概念 目的 实现方式 封装 概念 目的 实现方式 访问限制 概念 目的 实现方式 property 概念 目的 实现方式 多态 概念 目的 抽象类 概念 目的 实现方法 鸭子类型 组合 概 ...
- Cisco packet tracer 的手动添加模块
在PacketTracer 里面,路由器都是基本配置,这和真实设备是相同的 基本配置里面2620只有一个以太网口: 而2621和2811在背板上有两个以太网接口 所以,你在show run里面可以看到 ...
- 解决oracle11g数据库监听连接不上问题
java连接数据库报错12514,无法识别监听,但是PL客户端可以连接 oracle 监听 添加ip 同时修改tnsnames.ora.listener.ora将这两个文件中HOST后面的主机都修改为 ...
- wxxcx_learn
32个字符组成的一组随即字符串 function getRandChar($length){ $str = null; $strPol = "ABCDEFGHIJKLMNOPQRSTUVWX ...
- EFCore连接池的坑 差点晚年不保
长话短说 上个月公司上线了一个物联网数据科学项目,我主要负责前端接受物联网事件,并提供 参数下载. webapp 部署在Azure云上,参数使用Azure SQL Server存储. 最近从灰度测试转 ...
- Kubernetes 集群升级docker版本
Kubernetes 集群升级docker版本 原则:升级完一台正常后再接着升下一台. Work Node 一.迁移上的pod(保证业务,但期间会出现抖动) kubectl drain $NODE ...
- CSS | 圣杯布局、双飞翼布局 | 自适应三栏布局
圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式.两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局 虽然两者的实现方法略有差异,不过都遵循了以下要点: 1.两侧宽度固定 ...