zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    【.NET】VS2013创建Windows服务与调试服务
    【JS】处理数据四舍五入(tofixed与round的区别详解)
    【微信小程序】 基础语义笔记2:基本组件、获取节点信息
    面向对象和面向过程的优点和缺点
    【微信小程序】 基础语义笔记1:配置、页面文件、组件。
    【微信小程序】 wxParse组件
    zookeeper 碎片知识点
    zookeeper 基本概念
    RocketMQ 知识点
    单例模式---双层检验锁+volatile
  • 原文地址:https://www.cnblogs.com/minsons/p/8143897.html
Copyright © 2011-2022 走看看