特殊装饰器

from flask import Flask,render_template,request

app = Flask(__name__)

@app.before_request
def f1():
if request.path == '/login':
return
print('f1')
# return '123' @app.after_request
def f10(response):
print('f10')
return response @app.route('/index')
def index():
print('index')
return render_template('index.html') if __name__ == '__main__':
app.run()

多个装饰器

from flask import Flask,render_template,request

app = Flask(__name__)

@app.before_request
def f1():
print('f1') @app.before_request
def f2():
print('f2') @app.after_request
def f10(response):
print('f10')
return response @app.after_request
def f20(response):
print('f20')
return response @app.route('/index')
def index():
print('index')
return render_template('index.html') if __name__ == '__main__':
app.run()
app.__call__

解析

1. flask中的"@app.before_request","@app.after_request"就相当于是Django的中间件,作用是一样的;
2. "@app.before_request" 请求进来首先是执行这个下边的方法,这里方法里边没有return值,不要写return,如果写了就会直接将这个返回值直接返回给用户;
3. "@app.after_request" 是执行完视图之后才执行,这个是有返回值的,返回"response",将视图执行的结果返回前端页面;
4. 注意:before_after request可以在蓝图中定义,在蓝图中定义的话,作用域只在本蓝图。
5. 也可以有换一个写法,app.before_request(x1),跟装饰器是一样的;

Flask的“中间件”的更多相关文章

  1. Flask之中间件

    from flask import Flask, flash, redirect, render_template, request app = Flask(__name__) app.secret_ ...

  2. Flask 请求中间件、错误处理、标签、过滤器、CBV

    目录 一.请求中间件 二.请求中间件额外方法(重写源码) 三.请求错误处理 四.请求标签.过滤器 五.CBV写法 基础版 常用版 一.请求中间件 中间件: 1 before_first_request ...

  3. 第二篇 Flask基础篇之(闪现,蓝图,请求扩展,中间件)

    本篇主要内容: 闪现 请求扩展 中间件 蓝图 写装饰器,常用 functools模块,帮助设置函数的元信息 import functools def wrapper(func): @functools ...

  4. Flask(2)- 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)

    一.装饰器的坑以及解决方法 1.使用装饰器装饰两个视图函数,代码如下 from flask import Flask, redirect, render_template, request, sess ...

  5. Flask - 中间件

    其实就是封装旧酒,装进新瓶,自己再加点料.留坑,还没有用到. Flask的请求扩展就是Django的中间件.Django的中间件不是Flask的中间件 from flask import Flask ...

  6. Flask初识

    一.Flask初识 1.Flask介绍 Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug服务 ,模板引擎则使用 Jinja2 .Flask ...

  7. flask基础二

    内容有:1.配置文件处理,2.路由系统,3.视图,4.请求,5.响应,6.模板渲染,7.session,8.flash,9.中间件,10特殊装饰器 一:一个简单知识点 通过路径构成的字符串1.动态导入 ...

  8. Flask 框架

    装饰器知识回顾 http://www.cnblogs.com/0bug/p/7978595.html 普通装饰器格式: def wrapper(func): def inner(*args, **kw ...

  9. flask 未完待续

    Flask - 一个短小精悍.可扩展的一个Web框架很多可用的第三方组件:http://flask.pocoo.org/extensions/blogs:https://www.cnblogs.com ...

随机推荐

  1. PHPCMS V9.6.0 SQL注入漏洞分析

    0x01 此SQL注入漏洞与metinfo v6.2.0版本以下SQL盲注漏洞个人认为较为相似.且较为有趣,故在此分析并附上exp. 0x02 首先复现漏洞,环境为: PHP:5.4.45 + Apa ...

  2. CVE-2019-2618任意文件上传漏洞复现

    CVE-2019-2618任意文件上传漏洞复现 漏洞介绍: 近期在内网扫描出不少CVE-2019-2618漏洞,需要复测,自己先搭个环境测试,复现下利用过程,该漏洞主要是利用了WebLogic组件中的 ...

  3. JavaScript实现自定义右键菜单

    JavaScript实现自定义右键菜单,思路如下: 1. 屏蔽默认右键事件: 2. 隐藏自定义的菜单模块(如div.ul等): 3. 右键点击特定或非特定区域,显示菜单模块: 4. 再次点击,隐藏菜单 ...

  4. 面向切面@Aspect

    package com.imooc.demo.filter; import org.springframework.core.Ordered; import org.springframework.c ...

  5. [leetcode]242. Valid Anagram判断两个字符串是不是包含相同字符的重排列

    /* 思路是判断26个字符在两个字符串中出现的次数是不是都一样,如果一样就返回true. 记住这个方法 */ if (s.length()!=t.length()) return false; int ...

  6. maven打包,跳过生成javadoc

    有时候由于代码中注释错误(比如方法参数)或者maven javadoc插件版本有问题,导致打包报错,而我们着急打包验证问题,没有时间一一修改错误,这时候可以先跳过生成javadoc,继续下一步工作. ...

  7. Spring Boot 自动配置之@Conditional的使用

    Spring Boot自动配置的"魔法"是如何实现的? 转自-https://sylvanassun.github.io/2018/01/08/2018-01-08-spring_ ...

  8. TurtleBot3 Waffle (tx2版华夫)(10)自主导航(A2激光雷达)

    1)[Remote PC] 启动roscore $ roscore 2)[TurBot3] 启动turbot3 $ roslaunch turbot3_bringup minimal.launch 3 ...

  9. MySQL 中的WAL机制

    本文主要概括的是 WAL 机制涉及的三种日志,具体与其他组件的联系.执行可查看 一条 sql 的执行过程详解 .MySQL中的事务原理和锁机制 . 是什么 WAL,全称是Write-Ahead Log ...

  10. 我的开源项目在五个月内超过了 600 star

    其实我在 2016 年年底就开始写了这个项目:Forest,一个能够将 HTTP 的所有请求信息(包括 URL .Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能 ...