Flask-Admin使用教程
Posted 一点链科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask-Admin使用教程相关的知识,希望对你有一定的参考价值。
准备写一个区块链资讯APP,但后台管理需要不错的前端技能,因为前端技术实在不敢恭维。所以找了 flask-admin
框架,搭建起来后看起来还不错。接入方便快捷,基本不需要前端技术。先来看图。
看起来还不错吧。一点链后台管理系统暂时只实现了用户管理,资讯管理。对于Flask-Admin也只是简单的使用,比如自定义字段,字段命名,权限认证等等。
安装
pip install flask-admin
pip install Flask-BabelEx
pip install Flask-Login
flask-admin: 后台管理框架。
Flask-BabelEx: 国际化支持
Flask-Login:flask-admin权限管理。
配置
def reg_babel(app):
BABEL_DEFAULT_LOCALE = 'zh_CN'
babel = Babel(app)
def reg_admin(app):
"""
注册后台管理
:param app:
:return:
"""
admin = Admin(app=app, name='一点链后台管理系统', index_view=OBCAdminIndexView(), base_template='my_master.html')
admin.add_view(UserView(User, db.session, name='用户'))
admin.add_view(AnnouncementView(Announcement, db.session, name='资讯'))
def reg_login_manager(app):
login_manager = LoginManager()
login_manager.init_app(app)
@login_manager.user_loader
def load_user(user_id):
return db.session.query(User).get(user_id)
上面三个函数包含了三个框架的注册以及配置。regbabel配置支持国际化。regloginmanager配置登陆管理器。regadmin配置支持flask后台管理系统。其中admin注册需要指定admin view以及html。并且需要将需要管理的数据库进行配置导入。
Flask-Admin主页
添加flask-admin主要步骤如下:
配置用户数据库模型。
添加AdminIndexView视图处理
添加页面
添加其余模型视图处理。
配置用户数据库模型
@property
def is_authenticated(self):
return True
@property
def is_active(self):
return True
@property
def is_anonymous(self):
return False
def get_id(self):
return self.id
# Required for administrative interface
def __unicode__(self):
return self.username
在用户模型下加入如上。
添加AdminIndexView视图处理
class OBCAdminIndexView(AdminIndexView):
@expose('/')
def index(self):
if not current_user.is_authenticated:
return redirect(url_for('.login_view'))
return super(OBCAdminIndexView, self).index()
@expose('/login/', methods=('GET', 'POST'))
def login_view(self):
# handle user login
form = AdminLoginForm(request.form)
if helpers.validate_form_on_submit(form):
user = form.get_user()
login_user(user)
if current_user.is_authenticated:
return redirect(url_for('.index'))
link = '<p>Don\'t have an account? <a href="' + url_for('.login_view') + '">Click here to register.</a></p>'
self._template_args['form'] = form
self._template_args['link'] = link
return super(OBCAdminIndexView, self).index()
@expose('/logout/')
def logout_view(self):
logout_user()
return redirect(url_for('.index'))
处理流程如下:
判断是否认证。
没有认证跳转到登陆,如果已经认证,直接进入系统。
添加其余模型视图处理
html页面就不展示了。一点链后台添加了用户,资讯管理模型,代码如下:
class UserView(ModelView):
# 这里是为了自定义显示的column名字
def is_accessible(self):
return current_user.is_authenticated
column_labels = dict(
id=u'用户ID',
email=u'邮箱',
nickname=u'用户名',
create_time=u'创建时间',
status=u'状态'
)
# 如果不想显示某些字段,可以重载这个变量
column_exclude_list = (
'_password',
)
class AnnouncementView(ModelView):
def is_accessible(self):
return current_user.is_authenticated
column_labels = dict(
id=u'资讯ID',
title=u'标题',
content=u'内容',
type=u'子类型',
datetime=u'时间',
news_type=u'类型',
create_time=u'创建时间',
status=u'状态'
)
已在代码中作出注释。
总结
本文因为开发进度,暂时只使用Flask-Admin这些功能。后续将介绍更多功能的使用。
以上是关于Flask-Admin使用教程的主要内容,如果未能解决你的问题,请参考以下文章