flask_admin 筆記四 自定義視圖
阿新 • • 發佈:2017-12-29
urn eat 類名 color mas 限制 html模板 創建 nds
定義自己的視圖
對於您的要求非常具體的情況,您很難用內置的ModelView類來滿足這些需求,Flask-Admin使您可以輕松地完全控制並將自己的視圖添加到界面中。
1)獨立視圖
可以通過擴展BaseView類並定義自己的視圖方法來添加一組獨立的視圖(不綁定到任何特定的模型)。 例如,要添加來自第三方API的某些分析數據來展示的頁面,請執行以下操作:
from flask_admin import BaseView, expose class AnalyticsView(BaseView): @expose(‘/‘) def index(self):return self.render(‘analytics_index.html‘) admin.add_view(AnalyticsView(name=‘Analytics‘, endpoint=‘analytics‘))
這將添加一個鏈接到您的視圖的導航欄。 請註意,它是以“/”作為根URL的。 這是對獨立視圖的限制:至少每個視圖類至少需要一個方法來作為視圖根路徑。
以analytics_index.html 頁面為例:
{% extends ‘admin/master.html‘ %} {% block body %} <p>Here I‘m going to display some data.</p>{% endblock %}
通過擴展admin / master.html模板,即使在嚴格控制頁面內容的情況下,也可以保持一致的用戶體驗。
2)重寫內建視圖
在某些情況下,您希望大部分內置ModelView功能,但是您想要替換其中一個默認的創建,編輯或列表視圖。 為此,您可以僅覆蓋有問題的視圖,並且所有指向該視圖的鏈接仍將按照您的預期運行:
from flask_admin.contrib.sqla import ModelView # Flask and Flask-SQLAlchemy initialization here class UserView(ModelView): @expose(‘/new/‘, methods=(‘GET‘, ‘POST‘)) def create_view(self): """ Custom create view. """ return self.render(‘create_user.html‘)
可以覆蓋原先的請求路徑
但是這裏配的所有鏈接,實際中都是加上前綴 /admin/XXX; =====XXX:代碼model類名; 例如上面的例子的請求鏈接是 /admin/user/new/
flask_admin 筆記四 自定義視圖