目錄flask
做用: 重定義錯誤返回信息!session
@app.errorhandler(404) def error404(a): return f"你要查看的頁面,被怪獸吃了!{a}"
做用: 在請求(request)進入視函數以前 進入被裝飾的函數, 所以能夠在請求進入視函數以前作一些操做, 好比驗證session等.app
from flask import Flask from flask import request from flask import redirect from flask import session app = Flask(__name__) # type:Flask app.secret_key = "DragonFire" @app.before_request def is_login(): if request.path == "/login": return None if not session.get("user"): return redirect("/login") @app.route("/login") def login(): return "Login" @app.route("/index") def index(): return "Index" @app.route("/home") def home(): return "Login" app.run("0.0.0.0", 5000)
@app.before_request 也是一個裝飾器,他所裝飾的函數,都會在請求進入視圖函數以前執行函數
request.path 是來讀取當前的url地址若是是 /login 就容許直接經過 return None 你能夠理解成經過放行post
校驗session中是否有user 若是沒有的話,證實沒有登陸,因此絕不留情的 redirect("/login") 跳轉登陸頁面url
還有一個要提的 @app.before_first_request 它與 @app.before_request 極爲類似或者說是如出一轍,只不過它只會被執行一次code
做用: 在響應(response)以後作出響應路由
@app.after_request def foot_log(environ): if request.path != "/login": print("有客人訪問了",request.path) return environ
FBV路由和視圖get
@app.route("/login") def login():
CBV:it
from flask import views class Login(views.MethodView): def get(self): pass def post(self): pass app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))