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原则导致的坏处很容易理解,例如维护困难,修改时一旦遗漏就会产生不易察觉的问题. 一.函数 ...
随机推荐
- 外键(foreign key)的使用及其优缺点
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键.由此可见,外键表示了两个关系之间的相关联系.以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表. ...
- 单片机内存分配中的.text .data .bss heap stack
[本文转自:http://www.51hei.com/bbs/dpj-41696-1.html] .text段:代码段(code segment/text segment)通常是指用来存放程序执行代码 ...
- 自定义BufferedReader
缓冲区的建立目的就是增加传输性能,使我们传输数据更加快速 缓冲区的内部其实很简单 就是在内部封装了一个数组 用数组来存储数据 对外提供一些方法对数组进行访问 其中这些方法的操作就是对数组的指针(角标) ...
- react-native中TextInput在ios平台下不能输入中文
目录 1. github上相关资料 2.需要满足defultValue和value属性 react-native 0.55.4版本,发现TextInput 在iOS平台上无法输入中文的问题. 1. g ...
- python操作s3服务中的文件
亚马逊云aws提供了s3服务.国内一些云厂商也用了s3技术.要操作s3服务器中的文件需要用到boto这个python包.下面的代码是一个简单例子. #! /usr/bin/python # -*-co ...
- [TimLinux] Linux shell获取进程pid
调用脚本时,获取进程PID: (/this/is/a/script/file.sh > /out/to/log.txt & echo $!) & 脚本内部,获取进程PID: ec ...
- Linux下RocketMQ下载安装教程
一.下载 1.官网下载:下载地址 2.百度网盘下载:下载地址 提取码:0g5a java开发工具下载地址及安装教程大全,点这里. 更多深度技术文章,在这里. 二.安装及启动 1.将zip文件上传到 ...
- Mysql多实例数据库
什么是Mysql的多实例? 简单的说,Mysql多实例就是一台服务器上同时开启多个不同的服务端口(如3306.3307)同时运行多个Mysql服务进程,这些服务进程通过不同socket监听不同的服务端 ...
- 查看yum已安装的包
在linux下如何使用yum查看安装了哪些软件包 列出所有已安装的软件包 yum list installed yum针对软件包操作常用命令: 1.使用 yum 查找软件包 命令:yum search ...
- xshell6和xftp6运行提示缺少mfc110u.dll文件的解决办法
xshell6和xftp6运行提示缺少mfc110u.dll文件的解决办法 下载地址 http://www.microsoft.com/zh-CN/download/details.aspx?id=3 ...