Flask-Admin使用教程

Posted 一点链科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask-Admin使用教程相关的知识,希望对你有一定的参考价值。

准备写一个区块链资讯APP,但后台管理需要不错的前端技能,因为前端技术实在不敢恭维。所以找了 flask-admin框架,搭建起来后看起来还不错。接入方便快捷,基本不需要前端技术。先来看图。

看起来还不错吧。一点链后台管理系统暂时只实现了用户管理,资讯管理。对于Flask-Admin也只是简单的使用,比如自定义字段,字段命名,权限认证等等。

安装

 
   
   
 
  1. pip install flask-admin

  2. pip install Flask-BabelEx

  3. pip install Flask-Login

  • flask-admin: 后台管理框架。

  • Flask-BabelEx: 国际化支持

  • Flask-Login:flask-admin权限管理。

配置

 
   
   
 
  1. def reg_babel(app):

  2.    BABEL_DEFAULT_LOCALE = 'zh_CN'

  3.    babel = Babel(app)

  4. def reg_admin(app):

  5.    """

  6.    注册后台管理

  7.    :param app:

  8.    :return:

  9.    """

  10.    admin = Admin(app=app, name='一点链后台管理系统', index_view=OBCAdminIndexView(), base_template='my_master.html')

  11.    admin.add_view(UserView(User, db.session, name='用户'))

  12.    admin.add_view(AnnouncementView(Announcement, db.session, name='资讯'))

  13. def reg_login_manager(app):

  14.    login_manager = LoginManager()

  15.    login_manager.init_app(app)

  16.    @login_manager.user_loader

  17.    def load_user(user_id):

  18.        return db.session.query(User).get(user_id)

上面三个函数包含了三个框架的注册以及配置。regbabel配置支持国际化。regloginmanager配置登陆管理器。regadmin配置支持flask后台管理系统。其中admin注册需要指定admin view以及html。并且需要将需要管理的数据库进行配置导入。

Flask-Admin主页

添加flask-admin主要步骤如下:

  • 配置用户数据库模型。

  • 添加AdminIndexView视图处理

  • 添加页面

  • 添加其余模型视图处理。

配置用户数据库模型

 
   
   
 
  1. @property

  2.    def is_authenticated(self):

  3.        return True

  4.    @property

  5.    def is_active(self):

  6.        return True

  7.    @property

  8.    def is_anonymous(self):

  9.        return False

  10.    def get_id(self):

  11.        return self.id

  12.    # Required for administrative interface

  13.    def __unicode__(self):

  14.        return self.username

在用户模型下加入如上。

添加AdminIndexView视图处理

 
   
   
 
  1. class OBCAdminIndexView(AdminIndexView):

  2.    @expose('/')

  3.    def index(self):

  4.        if not current_user.is_authenticated:

  5.            return redirect(url_for('.login_view'))

  6.        return super(OBCAdminIndexView, self).index()

  7.    @expose('/login/', methods=('GET', 'POST'))

  8.    def login_view(self):

  9.        # handle user login

  10.        form = AdminLoginForm(request.form)

  11.        if helpers.validate_form_on_submit(form):

  12.            user = form.get_user()

  13.            login_user(user)

  14.        if current_user.is_authenticated:

  15.            return redirect(url_for('.index'))

  16.        link = '<p>Don\'t have an account? <a href="' + url_for('.login_view') + '">Click here to register.</a></p>'

  17.        self._template_args['form'] = form

  18.        self._template_args['link'] = link

  19.        return super(OBCAdminIndexView, self).index()

  20.    @expose('/logout/')

  21.    def logout_view(self):

  22.        logout_user()

  23.        return redirect(url_for('.index'))

处理流程如下:

  • 判断是否认证。

  • 没有认证跳转到登陆,如果已经认证,直接进入系统。

添加其余模型视图处理

html页面就不展示了。一点链后台添加了用户,资讯管理模型,代码如下:

 
   
   
 
  1. class UserView(ModelView):

  2.    # 这里是为了自定义显示的column名字

  3.    def is_accessible(self):

  4.        return current_user.is_authenticated

  5.    column_labels = dict(

  6.        id=u'用户ID',

  7.        email=u'邮箱',

  8.        nickname=u'用户名',

  9.        create_time=u'创建时间',

  10.        status=u'状态'

  11.    )

  12.    # 如果不想显示某些字段,可以重载这个变量

  13.    column_exclude_list = (

  14.        '_password',

  15.    )

  16. class AnnouncementView(ModelView):

  17.    def is_accessible(self):

  18.        return current_user.is_authenticated

  19.    column_labels = dict(

  20.        id=u'资讯ID',

  21.        title=u'标题',

  22.        content=u'内容',

  23.        type=u'子类型',

  24.        datetime=u'时间',

  25.        news_type=u'类型',

  26.        create_time=u'创建时间',

  27.        status=u'状态'

  28.    )

已在代码中作出注释。

总结

本文因为开发进度,暂时只使用Flask-Admin这些功能。后续将介绍更多功能的使用。

以上是关于Flask-Admin使用教程的主要内容,如果未能解决你的问题,请参考以下文章

Flask-admin使用经验技巧总结

Flask-admin使用经验技巧总结

flask-admin有用的例子

VIM 代码片段插件 ultisnips 使用教程

flask项目结构快速开发后台flask-admin

Flask-admin 使用总结