Flask中的before_request after_request

1.@app.before_request 在请求(request)以前作出响应javascript

@app.before_request 也是一个装饰器,他所装饰的函数,都会在请求进入视图函数以前执行html

2.@app.after_request 在响应(response)以前作出响应java

实例 

复制代码
from flask import Flask,render_template,session,jsonify,request,redirect,send_file
app = Flask(__name__)
app.secret_key = "$%^Y&U*I*(&*"

#  在请求进入视图函数以前 作出响应,只执行一次
@app.before_first_request
def bfe():
    print("111111111")
    # return send_file("settings.py")

#  在请求进入视图函数以前 作出响应
@app.before_request
def be1():
    print("be1")
    if request.path == "/login":
        return None
    if not session.get("user"):
        return redirect("/login")
    return None

@app.before_request
def be2():
    print("be2")
    return None

@app.before_request
def be3():
    print("be3")
    return None


# 在视图函数处理以后 响应返回客户端以前
@app.after_request
def af1(res):
    print("af1")
    return res

@app.after_request
def af2(res):
    print("af2")
    return res

@app.after_request
def af3(res):
    print("af3")
    return res



@app.route("/")
def index():
    print("如今进入视图函数了")
    return jsonify({"name":1})


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

    return render_template("login.html")


@app.errorhandler(404)
def error404(arg):
    print(arg)
    return redirect("https://www.autohome.com.cn/beijing/asdfgasdfasdf")

if __name__ == '__main__':
    app.run()

    #直接启动访问根路径的打印结果:
    # 111111111   be1   af3    af2    af1     be1    be2    be3    af3    af2    af1
    # (11111111只被打印一次就没了)

    # 访问login:
    # 正常状况:be1 - be2 - be3 - views - af3 - af2 - af1 # 返回顺序是定义代码时的倒叙
    # 异常状况:be1 - af3 - af2 - af1 # 异常阻塞请求的状况
复制代码

request.path 是来读取当前的url地址若是是 /login 就容许直接经过 return None 你能够理解成经过放行git

校验session中是否有user 若是没有的话,证实没有登陆,因此绝不留情的 redirect("/login") 跳转登陆页面json

还有一个要提的 @app.before_first_request 它与 @app.before_request 极为类似或者说是如出一辙,只不过它只会被执行一次flask

 

 

 
 
分类: Flask
 
0
0
 
 
 
« 上一篇: Flask实例化的参数 及 对app的配置
相关文章
相关标签/搜索