1 視圖
BaseView
BaseView是視圖中的基類,所有的視圖都繼承自它。當(dāng)我們定義一個(gè)繼承自BaseView的子類時(shí),BaseView自動(dòng)將我們用@exposed修飾的urls注冊(cè)為Flask中的藍(lán)圖。
我們可以通過BaseView來(lái)實(shí)現(xiàn)自定義頁(yè)面,并添加到菜單上或者通過一個(gè)連接來(lái)訪問它。這里需要注意,作為路由的方法一定要用@exposed修飾,如果需要保護(hù)的路由則需要額外使用@has_access修飾。
現(xiàn)在我們來(lái)看一個(gè)小例子,通常我們使用F.A.B.框架都使用自動(dòng)生成的項(xiàng)目結(jié)構(gòu),這樣我們只需要在app目錄下的views.py文件中修改代碼即可。
fromflask_appbuilderimportAppBuilder, expose, BaseView
fromappimportappbuilder
class MyView(BaseView):
route_base ="/myview"
@expose('/hello/')
def hello(self):
return'Hello World!
'@expose('/message/')
def message(self, msg):
msg ='Hello %s'% (msg)
return msg
appbuilder.add_view_no_menu(MyView())
這里需要注意一點(diǎn)就是在訪問urls的時(shí)候,一定要將視圖的名字作為路由的前綴!
add_view和add_link這兩個(gè)方法,將在菜單中生成鏈接訪問我們定義的路由
模型視圖
定義數(shù)據(jù)庫(kù)模型 ??
? ? ? ? ? 先 ?在model.py中定義數(shù)據(jù)庫(kù)模型,
定義數(shù)據(jù)庫(kù)視圖? ??
? ? ? ? ? 通過繼承ModelView類可以實(shí)現(xiàn)我們自定義的視圖,F(xiàn).A.B.可以針對(duì)我們定義好的數(shù)據(jù)庫(kù)模型生成創(chuàng)建、刪除、更新和顯示的功能。? ? ? ? ? ? ? ? ? ? ? ?
db.create_all()
首先使用db.create_all()根據(jù)數(shù)據(jù)庫(kù)模型創(chuàng)建表,然后再將視圖添加到菜單。
related_views來(lái)關(guān)聯(lián)視圖