个人技术总结——flask-admin扩展(代码片段)

imclaudia imclaudia     2022-11-30     576

关键词:

一、技术概述

Flask-Admin是一个功能齐全、简单易用的Flask扩展,可以为Flask应用程序增加管理界面。用这样一种方式实现管理后台,开发者拥有应用程序的外观和功能的全部控制权。

二、技术详述

这个库使用一个简单而强大的概念——管理部件,是用视图方法构建的类:

class MyView(BaseView):
    @expose(‘/‘)
    def index(self):
        return self.render(‘admin/myindex.html‘)

    @expose(‘/test/‘)
    def test(self):
        return self.render(‘admin/test.html‘)

如果用户访问index视图,模板文件admin/myindex.html会被渲染。同样的,访问test视图的结果是admin/test.html被渲染。

  • 初始化

要开始使用Flask-Admin,需要创建一个Admin类实例并和Flask应用程序实例关联。

from flask import Flask
from flask.ext.admin import Admin

app = Flask(__name__)

admin = Admin(app)
# Add administrative views here

app.run()
  • 增加视图

增加一个衍生于BaseView类的管理视图:

from flask import Flask
from flask.ext.admin import Admin, BaseView, expose

class MyView(BaseView):
    @expose(‘/‘)
    def index(self):
        return self.render(‘index.html‘)

app = Flask(__name__)

admin = Admin(app)
admin.add_view(MyView(name=‘Hello‘))

app.run()
  • 身份验证

Flask-Admin默认管理界面是完全开放的,要控制使用管理界面,可以指定is_accessible方法:

class MyView(BaseView):
    def is_accessible(self):
        return login.current_user.is_authenticated()
  • 生成URL

在内部,视图类工作于Flask蓝图的顶部,因此可以使用url_for附带一个.前缀来获得局部视图的URL:

from flask import url_for

class MyView(BaseView):
    @expose(‘/‘)
    def index(self)
        # Get URL for the test view method
        url = url_for(‘.test‘)
        return self.render(‘index.html‘, url=url)

    @expose(‘/test/‘)
    def test(self):
        return self.render(‘test.html‘)
  • 模型视图

模型视图允许你为数据库中的每个模型增加专用的管理页面。通过创建ModelView类实例来实现,ModelView类可从Flask-Admin内置的ORM后端引入。一个SQLAlchemy后端的例子:

from flask.ext.admin.contrib.sqla import ModelView

# Flask and Flask-SQLAlchemy initialization here

admin = Admin(app)
admin.add_view(ModelView(User, db.session))

三、技术使用中遇到的问题和解决过程

Flask-Admin有add_view视图函数,给admin添加视图的时候,不能放在create_app里。虽然运行没有报错,但是在单元测试的时候会出现蓝本重复注册,正确的方法是在create_app外面调用add_view

admin = Admin(name=u‘应用名称‘)

# 正确示例
admin.add_view(ModelView(name=‘板块‘, category=‘标签‘))

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    admin.init_app(app)

# 错误示例
admin.add_view(ModelView(name=‘板块‘, category=‘标签‘))

return app

四、总结

合理应用Flask Admin,可以用极少量的代码,快速构建小型WEB应用。

五、参考文献

flask-admin

Flask-admin使用经验技巧总结笔者是看狗书入门的flask,狗书上对于flask-admin这个扩展并没有进行讲解,最近因为项目需要,学习使用flask-admin,瞬间体会到了flask开发的快速、扩展的强大        Flask-admin使用经验技巧总结... 查看详情

个人技术总结(代码片段)

个人技术总结1、技术概述--SpringBoot集成JWT实现token验证这个技术是做什么对用户进行权限认证学习该技术的原因在需要用户登录的系统中有一个始终需要解决的问题,即用户权限认证。使用jwt(jsonwebtoken)可以很好的解决这个问... 查看详情

个人技术总结(代码片段)

一、技术概述我要介绍的是Vue传参的三种方式。这个技术算是比较基础的,不会很难,但是基本每个项目都要用到,所以写下这篇博客。主要的运用场景:点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据... 查看详情

个人技术总结(代码片段)

1、技术概述基于mpvue搭建小程序项目框架2、技术详述mpvue框架对于从没有接触过小程序又要尝试小程序开发的人员来说,无疑是目前最好的选择。mpvue从底层支持Vue.js语法和构建工具体系,同时再结合相关UI组件库,便可以高效... 查看详情

个人技术总结(代码片段)

Android-广播机制1.技术概述我们都知道网络通信原理中,一个Ip网络范围中,最大的IP地址是被保留作为广播地址使用的,那么其实Android也引入了类似一套广播消息机制,而且对比来看显得更加灵活。因为Android中每个应用程序都... 查看详情

个人技术总结(代码片段)

hibernate实现数据库的删除,难点是外键的约束和删除方法的具体使用。有School、College、Major、UserIdentity四个类,School和College,College和Major都是一对多的关联,同时School、College、Major都和UserIdentity是一对多关联。如果我们直接删... 查看详情

个人技术总结随笔(代码片段)

Junit(单元测试)Junit是java语言中用于单元测试的测试框架首先是使用junit测试框架,需要在项目里导入junit.jar然后使用注解的方式来标记方法,在方法前加上@Test表示这个方法是一个测试方法。我们在这里举一个简单的加法的例... 查看详情

个人技术总结—列表搜索(代码片段)

1、技术概述搜索框搜索功能是非常常用的一个功能,可以提高用户查找信息的效率,接触这个功能的原因是开发中我们的应用需要这个功能来方便用户查找列表中的信息。技术难点在于需要自己书写文本过滤的规则并更新给用... 查看详情

个人技术总结(代码片段)

javaspring技术概述spring框架是由于软件开发的复杂性而创建的轻量级控制反转(IoC)和面向切面(AOP)的容器框架。它使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,其用途不仅仅限于服务器端的开发。从简单性... 查看详情

个人技术总结——flask-socketio框架(代码片段)

一、技术概述这个技术是做什么的Flask-SocketIO使Flask应用程序能够访问客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用Javascript,C++,Java和Swift中的任何SocketIO官方客户端库或任何兼容的客户端来建立与服务器的... 查看详情

个人技术总结——postman的使用(使用数据变量多次运行集合)(代码片段)

1、技术概述是一款功能强大的网页调试与发送网页HTTP请求的工具用于接口调试、接口测试学习该技术的原因——测试项目接口正确性,创建+测试:创建和发送任何的HTTP请求,请求可以保存到历史中再次执行技术难点全英文环... 查看详情

个人技术总结---基于springboot使用email进行验证码校验(代码片段)

一、技术概述? 做什么:基于SpringBoot使用Email进行验证码校验方法;原因:有关注册、忘记密码功能需要一定的验证来保证账号的安全性;难点:分为两部分,一部分就是如何发送email邮件,另一部分就是如何校验验证码,下面... 查看详情

flask-admin(代码片段)

文档:https://flask-admin.readthedocs.io/en/latest/1.FLASK-Admin1.1安装pipinstallflasf-admin或者condainstallflask-admin-cconda-forge1.2模块初始化application/__init__.py,代码:#项目初始化[主程文件]importosfromflaskimportFlask 查看详情

个人总结

 个人总结        经过一学期软工课程的学习,我真的收获了很多,说实话我在这门课上写的代码基本上等于我上这门课前写过的所有代码量之和而且我学习了非常多的新技术,我开课前从来不会... 查看详情

个人总结2019asp.net面试题(代码片段)

1、什么是面向对象?面向对象就是把一个人或事务的属性,比如名字,年龄这些定义在一个实体类里面。存和取的时候直接使用存取实体类就把这个人的名字,年龄这些全部存了,这个实体类就叫对象,这种思想就叫面向对象... 查看详情

flask项目结构快速开发后台flask-admin(代码片段)

简介:Flask-admin相当django的xadmin吧!快速装配一个后台用来管理数据。Flask-admin也是有使用局限性的,他只适合开发小型快速的应用,不适合那种大型并发性高,逻辑复杂的应用。首先,对于大型应用都是前后端分离的,加快访... 查看详情

关于个人开源项目(vueapp)的一些总结(代码片段)

关于个人开源项目(vueapp)的一些总结项目地址https://github.com/BYChoo/record项目简介此项目名叫:Record。是以Vue全家桶(vue,vue-router,vuex)+axios+express+mongodb技术栈开发的一个校园考勤网站,专门为老师定制的。网站目前实现了登录注册、... 查看详情

一个平凡但不平庸的程序猿2018个人总结(代码片段)

...情况去年目标完整的链接在这里:一个两年java程序猿的2017个人总结这里先列举一下去年定的目标:阅读2本以上的技术相关书籍,并作出相应的实践;阅读5本以上国内外有意思的书籍;阅读jdk常用类的源码,能够理解其中的涵义;... 查看详情