[ミドルウェア]フラスコ--2019-08-07 10時32分56秒

オリジナル:http://106.13.73.98/__/26/

before_request応答を要求する前にデコレータは、その装飾的な機能は、ビュー機能に入る前に実行されます。

after_request要求後に応答するためのデコレータは、その装飾的な機能は、実行ビュー機能が完了した後に行われます。

実行順序:文書の書面での順序で実行して、中断からbefore_request装飾機能に関係なく、after_reponseな装飾のすべての機能を実行します。

ありbefore_first_requestデコレータが、彼はそれが一度だけ実行されることを除いて、非常にbefore_requestまたはまったく同じに会いました。

ここでbefore_request、ユーザは、例えばログインしているかどうかを確認するために装飾は:

from flask import Flask, request, redirect, session, render_template

app = Flask(__name__)
app.secret_key = "用于session加密的字符串"


# 这个函数被before_request装饰,将在所有的视图函数之前执行
@app.before_request
def is_login():
    if request.path == '/login':  # 如果访问的是登陆页面,则直接放行
        return None
    if not session.get('username'):  # 如果没有session数据,则去登陆
        return redirect('/login')
    return None  # 返回None即表示放行


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form.get('username')
        return redirect('/home')
    return render_template('login.html')


@app.route('/home')
def home():
    return 'This is home page.'


app.run(debug=True)

after_request使用法:

@app.after_request
def af1(response):  # 要接收response
    return response  # 必须返回response

オリジナル:http://106.13.73.98/__/26/

おすすめ

転載: www.cnblogs.com/gqy02/p/11313743.html