一:请求响应扩展

# 每一次访问都执行
# 注意请求之前按照顺序执行
# 请求之后按照书写顺序倒序执行
# 请求之前执行
@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框架(九): 请求和响应扩展以及中间件的更多相关文章

  1. flask框架基本使用(2)(响应与重定向)

    #转载请留言联系 flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html 1. flask 自定义返回状态码与响应头 from ...

  2. flask框架基本使用(4)(钩子函数,异常,命令行运行)

    flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html flask 框架基本使用(2):https://www.cnblogs. ...

  3. Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current_app模块和g模块

    Flask中上下文,分为请求上下文和应用上下文.既状态留存 ,就是把变量存在某一个地方可以调用 请求上下文:实际就是request和session用法理念,既都是可以存储东西. 应用上下文:既变量共享 ...

  4. Flask基础(01)-->Flask框架介绍

    什么是Flask? 说白了,Flask就是一种web框架 在python中常用的框架有 flask django tornado 什么又是web框架呢?  为什么要使用web框架呢? 增强扩展性和稳定 ...

  5. Flask框架 请求与响应 & 模板语法

    目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...

  6. Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、session

    Flask框架(二)—— 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 ...

  7. flask之请求与响应、闪现(阅后即焚)、请求扩展(before,after)、中间件、LOCAL对象、偏函数、

    目录 1.flask请求与响应 2.闪现 3.请求扩展 4.中间件 5.LOCAL对象 6.偏函数 templates 1.flask请求与响应 from flask import Flask,req ...

  8. Flask框架(三)—— 请求扩展、中间件、蓝图、session源码分析

    Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_requ ...

  9. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)

    oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...

随机推荐

  1. Django:登录、注册、退出

    创建项目: 一.创建项目 django-admin startproject form_test 二.创建应用 1.cd form_test 2.sudo ./manage.py startapp f ...

  2. MVC4学习要点记一

    强类型的辅助方法:这些helper的特征是名称后面加上了 For , 这些叫做强类型的辅助方法. 共用布局页:可以在Views文件夹下面新建一个视图页,命名为_ViewStart.cshtml,将这部 ...

  3. lunix部署其前端项目常见报错

    1.npm install 报权限错误,如: 解决办法: 添加--unsafe-perm 参数,如 #npm install --registry=https://registry.npm.taoba ...

  4. 关于jar冲突的解决方向servlet-api

    1.可以考虑尽量往  java自带的jar  靠  比如说jdk-tools 2.如果用springboot项目  让其他jar 排除servlet-api的依赖 <dependency> ...

  5. LeetCode:620.有趣的电影

    题目链接:https://leetcode-cn.com/problems/not-boring-movies/ 题目 某城市开了一家新的电影院,吸引了很多人过来看电影.该电影院特别注意用户体验,专门 ...

  6. CSS3总结七:变换(transform)

    2D视图模型解析 3D视图模型解析 平移 旋转 伸缩 扭曲 z轴方向平移与perspective的神秘关系 matrix()终极变幻的方法 一.2D视图 2D视图就是默认平面上的每个点都与视线垂直,图 ...

  7. md加密 16位 32位

    16位大写 //生成MD5 public static String getMD5(String message) { String md5 = ""; try { Message ...

  8. Jenkins升级版本

    1 Jenkins的管理界面,下载最新版本的war包 2 找到自己部署Jenkins的war包的tomcat目录,替换最新的war包,重启tomcat即可 只需要把之前的war包重命名一个名字,不要以 ...

  9. 【转】tar命令详解

    原文:http://www.cnblogs.com/qq78292959/archive/2011/07/06/2099427.html tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压 ...

  10. linux-Redhat7 windows物理机与虚拟机设置共享目录

    一                   windows物理机与虚拟机设置共享目录 1.1        WMware Workstation点击重新安装WMware Tools 此时会弹出在客户机装载 ...