Flask - 中間件


其實就是封裝舊酒,裝進新瓶,自己再加點料。留坑,還沒有用到。

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的實現原理?看見都是這樣用第三方擴展的。日后研究


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM