flask_admin 筆記四 自定義視圖


定義自己的視圖

對於您的要求非常具體的情況,您很難用內置的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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM