Flask特殊装饰器

@app.before_request 请求进入视图函数之前
@app.after_request 请求结束,返回影响客户端之前
正常 be1 - be2 - be3 - vf - af3 - af2 - af1
异常 be1 - be2 - af3 - af2 - af1
@app.errorhandler(4xx or 5xx) 重定义错误信息
@app.errorhandler(404)
def error404(ErrorMessage):
print(ErrorMessage)
return redirect("https://www.autohome.com.cn/beijing/asdfe32r24rff23r23r")
# return send_file("image/1.jpg")
代码如下:
from flask import Flask, session, request, redirect, render_template, send_file
app = Flask(__name__)
# 开启session:
app.secret_key = '$%^&*(%$%^&*('
@app.before_request
def be1():
print("be1")
@app.before_request
def be2():
print("be2")
if request.path == "/login":
return None
if session.get("user"):
return None
else:
return redirect("/login")
@app.before_request
def be3():
print("be3")
@app.after_request
def af3(res):
print("af3")
return res
@app.after_request
def af2(res):
print("af2")
return res
@app.after_request
def af1(res):
print("af1")
return res
@app.route("/login", methods=["Get", "Post"])
def login():
if request.method == "GET":
return render_template("login.html")
else:
session["user"] = request.form.get("username")
return "登录成功"
@app.route("/index")
def index():
print("我是视图函数")
return render_template("index.html")
@app.route("/index1")
def index1():
return render_template("index.html")
@app.route("/index2")
def index2():
return render_template("index.html")
@app.errorhandler(404)
def error404(ErrorMessage):
print(ErrorMessage)
return redirect("https://www.autohome.com.cn/beijing/asdfe32r24rff23r23r")
# return send_file("image/1.jpg")
if __name__ == '__main__':
app.run()
HTML页面如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
</head>
<body>
<h1>你好,世界!</h1>
{#增加静态访问路径#}
<img src="/static/1.jpg">
</body>
</html>
原文地址:https://www.cnblogs.com/zhang-da/p/13190115.html