flask框架(九): 请求和响应扩展以及中间件
一:请求响应扩展
# 每一次访问都执行
# 注意请求之前按照顺序执行
# 请求之后按照书写顺序倒序执行
# 请求之前执行
@app.before_request
def process_request1(*args, **kwargs):
print('process_request1')
return None # 如果不是return None 访问就被拦截了,就不会执行url对应的函数,但是会执行after_request装饰的函数 @app.before_request
def process_request2(*args, **kwargs):
print('process_request2')
return None # 访问结束后执行
@app.after_request
def process_response1(response):
print('process_response1')
return response @app.after_request
def process_response2(response):
print('process_response2')
return response ########################## # 第一次请求的时候执行
@app.before_first_request
def first(*args, **kwargs):
pass
二:访问请求扩展的例子-登录验证
# 使用扩展来解决登录问题,比用装饰器好,每次访问之前都执行
@app.before_request
def process_request(*args, **kwargs):
if request.path == '/login': # 设置白名单
return None
user = session.get('user_info')
if user:
return None
url = url_for('l1') # 根据别名生成url
return redirect(url)
三:其他小扩展
# 定制错误信息,根据错误码定制
@app.errorhandler(404)
def error_404(arg):
return '404错误' # 模板语言定制,定制模板方法
@app.template_global()
def ab(a1, a2):
return a1 + a2 # 在模板语言中调用{{ab(1,2)}} @app.template_filter()
def db(a1, a2, a3):
return a1 + a2 + a3 # 在模板语言中调用{{1|db(2,3)}} |前面表示a1
四:封装源码自定义中间件
# 自定义中间件
class Md(object):
def __init__(self, old_wsgi_app):
self.old_wsgi_app = old_wsgi_app def __call__(self, environ, start_response, *args, **kwargs):
print('开始之前')
ret = self.old_wsgi_app(environ, start_response) # 使用它原来的东西执行,在这基础上扩展执行之前和执行之后
print('开始之后')
return ret # 这个中间件通过如下调用:
# if __name__ == '__main__':
# app.wsgi_app = Md(app.wsgi_app)
# app.run()
flask框架(九): 请求和响应扩展以及中间件的更多相关文章
- flask框架基本使用(2)(响应与重定向)
#转载请留言联系 flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html 1. flask 自定义返回状态码与响应头 from ...
- flask框架基本使用(4)(钩子函数,异常,命令行运行)
flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html flask 框架基本使用(2):https://www.cnblogs. ...
- Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current_app模块和g模块
Flask中上下文,分为请求上下文和应用上下文.既状态留存 ,就是把变量存在某一个地方可以调用 请求上下文:实际就是request和session用法理念,既都是可以存储东西. 应用上下文:既变量共享 ...
- Flask基础(01)-->Flask框架介绍
什么是Flask? 说白了,Flask就是一种web框架 在python中常用的框架有 flask django tornado 什么又是web框架呢? 为什么要使用web框架呢? 增强扩展性和稳定 ...
- Flask框架 请求与响应 & 模板语法
目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...
- Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、session
Flask框架(二)—— 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 ...
- flask之请求与响应、闪现(阅后即焚)、请求扩展(before,after)、中间件、LOCAL对象、偏函数、
目录 1.flask请求与响应 2.闪现 3.请求扩展 4.中间件 5.LOCAL对象 6.偏函数 templates 1.flask请求与响应 from flask import Flask,req ...
- Flask框架(三)—— 请求扩展、中间件、蓝图、session源码分析
Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_requ ...
- [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...
随机推荐
- Codeforces Round #406 (Div. 2) A MONSTER
A. The Monster time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 22-Perl Socket 编程
1.Perl Socket 编程Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. ...
- charles 抓包 (一)
在web.app开发中经常需要通过抓包来定位页面.接口返回数据的问题.在mac系统中,charles是一款功能丰富的抓包软件.可以实现app的数据抓包. 工具:charles 附送charles的破解 ...
- Autofac 组件、服务、自动装配
一.组件 创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式: 1.类型创建RegisterType AutoFac能够通过反射检查一个类型,选择 ...
- 深入Java虚拟机之内存区域与内存溢出
一.内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器.Java虚拟机栈.本地方 ...
- #!/usr/bin/node 是什么意思
// 调用系统环境变量中的解释器执行文件 #!/usr/bin/node //如果不是默认安装位置这个地方可能就找不到,那么文件就是报错,所以有了另一种写法 #!/usr/bin/env node
- Solved: XXX esx.problem.hyperthreading.unmitigated.formatOnHost not found XXX
esxi 出现XXX esx.problem.hyperthreading.unmitigated.formatOnHost not found XXX 问题. 回避方法: 将高级设置-->Us ...
- Java注解【四、自定义注解】
语法要求.元注解 元注解: Target-适用范围: Retention-类型:源码注解.编译时注解.运行时注解 Inherited-可继承(只能继承类上的注解,接口.类中的方法都不行) Docume ...
- shell脚本作业
.判断/etc/inittab文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file.” # ...
- 平时工作常用linux命令总结
mkdir 创建目录 make dir cp 拷贝文件 copy mv 移动文件 move rm 删除文件 remove # 创建连级目录 mkdir -p a/b/c # 拷贝文件夹a到文 ...