个人技术总结——Flask-Admin扩展
一、技术概述
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 2020-05-09
chencourage 2019-11-02
JessePinkmen 2019-10-20
bird 2016-06-13
wangshuliang 2019-04-18