Flask - 中间件
2024-10-08 13:46:33
其实就是封装旧酒,装进新瓶,自己再加点料。留坑,还没有用到。
Flask的请求扩展就是Django的中间件。Django的中间件不是Flask的中间件
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
class Md(object):
def __init__(self,old_wsgi_app):
self.old_wsgi_app = old_wsgi_app
def __call__(self, environ, start_response):
print('开始之前')
# 。。。一些自定义操作
ret = self.old_wsgi_app(environ, start_response)
# 。。。一些自定义操作
print('结束之后')
return ret
if __name__ == '__main__':
# 封装旧的app.wsgi_app,这是app.run()的原理,看源码。会调用__call__方法
app.wsgi_app = Md(app.wsgi_app)
app.run()
from flask import Flask, flash, redirect, render_template, request
app = Flask(__name__)
app.secret_key = 'some_secret'
@app.route('/')
def index1():
return render_template('index.html')
@app.route('/set')
def index2():
v = request.args.get('p')
flash(v)
return 'ok'
class MiddleWare:
def __init__(self,wsgi_app):
self.wsgi_app = wsgi_app
def __call__(self, *args, **kwargs):
return self.wsgi_app(*args, **kwargs)
if __name__ == "__main__":
app.wsgi_app = MiddleWare(app.wsgi_app)
app.run(port=9999)
问题:这是不是Flask-extensions的实现原理?看见都是这样用第三方扩展的。日后研究
最新文章
- Fragment之间传值
- JQuery 常用
- VSS提示";Could not find the Visual SourceSafe Internet Web Service connection information for the specified database
- Contacts群组添加成员,多选列表过滤已添加数据
- jQuery学习-----(一)JQuery的'$'符号用法
- 如何将中国知网CNKI中的文献导入EndNote X6
- gdb学习(一个)[再版]
- c++学习笔记---03---从一个小程序说起2
- Linux下的 .o、.a、.so文件
- 【阿里云】在 Windows Server 2016 下使用 FileZilla Server 安装搭建 FTP 服务
- 几种 WebP 动态图制作方法
- Java基础知识➣序列化与反序列化(四)
- 使用ycsb对hbase1.4.9 benchmark
- JAVA发送http get/post请求,调用http接口、方法
- Seaslog安装和参数配置
- Mysql的优化一则
- 如何使用EditPlus批量删除 带有某个字符的一行
- Oracle数据库DDL,DML,视图,PLSQL编程
- 时间操作(struct tm、time_t)求指定日期 前n天的日期
- 洛谷【P1052】过河
热门文章
- Python函数基础进阶
- centos 6.x 启动过程简介(来自老男孩)
- redis是单进程数据库,多用户排队对统一数据进行访问,不存在并发访问生产的线程安全问题
- The Preliminary Contest for ICPC Asia Nanjing 2019 - D Robots(概率dp+拓扑排序)
- Golang redis 学习指南
- matplotlib学习(2)
- iOS 上通过 802.11k、802.11r 和 802.11v 实现 Wi-Fi 网络漫游
- ISR high memory参数
- 洛谷P1164小A点菜(01背包)
- RPC远程服务调用