码迷,mamicode.com
首页 > 其他好文 > 详细

Flask学习记录之Flask-Admin

时间:2015-04-24 00:44:56      阅读:436      评论:0      收藏:0      [点我收藏+]

标签:

相信用过Django框架的都不会忘记它强大的Admin功能,Flask-admin是一款能够与Django Admin所媲美的扩展,能够快速创建Web管理界面,实现了用户、文件增删改查等常用功能;也可以通过修改模板文件来定制管理页面.

初始化:

from flask import Flask
from flask_admin import Admin

app = Flask(__name__)

admin = Admin(app)
# Add administrative views here
#也可以指定name属性来命名admin = Admin(app, name=‘Super Administrator‘)
app.run()

 

Flask-admin将后台的每一个菜单选项看作一个View对象,View对象要通过flask-admin实例对象注册后才能显示

from flask_admin import Admin, BaseView, expose

#继承一个BaseView定义一项管理菜单
class MyView(BaseView):
    #127.0.0.1:5000/admin/
    @expose(/)
    def index(self):
        return self.render(index.html)

#添加一个Hello菜单,这个视图可以在外部通过url_for(‘myview.index‘)生成url
admin.add_view(MyView(name=Hello))
#添加一个在Test标签下添加一个Hello 1菜单,路由为test1 #这个视图在外部通过url_for(‘test1.index‘)生成url admin.add_view(MyView(name=Hello 1, endpoint=test1, category=Test)) admin.add_view(MyView(name=Hello 2, endpoint=test2, category=Test)) admin.add_view(MyView(name=Hello 3, endpoint=test3, category=Test))

 

效果如图:

技术分享

安全

flask-admin不提供后台的安全认证,默认情况下,管理界面是完全公开的,不过你可以自己实现认证的逻辑,或者使用flask-login提供的.在定义View时覆盖父类的is_accessible()方法 ,返回False则禁止访问

class MyView(BaseView):
    def is_accessible(self):
        return login.current_user.is_authenticated()

模型

flask-admin可以通过创建ModelView类实例实现模型的管理

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

# Flask and Flask-SQLAlchemy initialization here

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

可以通过继承ModelView来定制模型管理内容

from flask_admin.contrib.sqla import ModelView

# Flask and Flask-SQLAlchemy initialization here

class MyView(ModelView):
    # 是否允许创建
    can_create = False

    # 显示的字段
    column_list = (login, email)

    def __init__(self, session, **kwargs):
        # You can pass name and other parameters if you want to
        super(MyView, self).__init__(User, session, **kwargs)

admin = Admin(app)
admin.add_view(MyView(db.session))

文件管理

from flask.ext.admin.contrib.fileadmin import FileAdmin

import os.path as op

# Flask setup here

admin = Admin(app)

path = op.join(op.dirname(__file__), static)
admin.add_view(FileAdmin(path, /static/, name=Static Files))

 

Flask学习记录之Flask-Admin

标签:

原文地址:http://www.cnblogs.com/agmcs/p/4452170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!