Flask-CBV模式

 Flask中的CBV模式

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