1. 程式人生 > >flask_admin 筆記四 自定義視圖

flask_admin 筆記四 自定義視圖

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 Im 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 筆記四 自定義視圖