''' flask中的CBV模式: (1)導入views模塊: from flask import views (2)定義類,繼承views.MethodView類: class 類名(views.MethodView) (3)在類中定義函數名爲容許的請求方式的小寫形式,進行函數定義,如def get(self):... (4)添加路由規則: CBV:app.add_url_rule(rule,endpoint='',view_func=類名.as_view(name='')) FBV:app.add_url_rule(rule,endpoint='',view_func=函數名))(直接替代@app.route()方式) 參數: rule 請求路徑 endpoint設置mapping路由映射函數rule:{endpoint:func} view_func路由映射的視圖函數或者類(as_view()中的name參數設置當前路由映射函數名,惟一指定,不設置endpoint自動爲name值) (5)methods=[]類中設置屬性,添加容許的請求方式,不寫默認都支持 (6)decorators = []對類中的函數都加上裝飾器,列表中能夠放多個裝飾器函數名,以此執行 '''
from flask import Flask,views,render_template,request app = Flask(__name__) class Login(views.MethodView): # methods = ["GET","POST"] # 指定請求方法,這裏能夠省略不寫,根據請求方法自動找到對應的方法去執行 decorators = [] #對類中的函數都加上裝飾器,列表中能夠放多個裝飾器函數名,依次執行 def get(self): return render_template("login.html") def post(self): username = request.form.get("username") password = request.form.get("password") # 判斷用戶名和密碼是否正確 if username == "henry" and password == "123456": return "200 ok" else: return "用戶名或密碼錯誤" app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login")) # name其實就是用來填充endpoint的,若是endpoint有值那麼name就沒有用,且name這個參數是必填的,至關於別名 app.run("0.0.0.0",9527)