Flask - 特殊裝飾器 和 Flask工做結構模式(FBV, CBV)

Flask - 特殊裝飾器 和 Flask工做結構模式

@app.errorhandler()

做用: 重定義錯誤返回信息!session

@app.errorhandler(404)
    def error404(a):
        return f"你要查看的頁面,被怪獸吃了!{a}"

@app.before_request

做用: 在請求(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

@app.after_request

做用: 在響應(response)以後作出響應路由

@app.after_request
def foot_log(environ):
    if request.path != "/login":
        print("有客人訪問了",request.path)
    return environ

FBV和CBV

  • 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"))
相關文章
相關標籤/搜索