flask_admin 笔记四 自定义视图

Posted 北冥大帝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 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 笔记四 自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

flask_admin 笔记二 授权和权限

Django学习笔记第八篇--实战练习四--为你的视图函数自定义装饰器

Flask-admin 使用总结

在自定义 Listview 适配器中使用多个视图

Day3: Python学习笔记之计算机基础——网络片

springBoot学习笔记自定义starter