python flask后台框架_Flask的图形化管理界面搭建框架Flask-Admin的使用教程

本文介绍了如何使用Flask-Admin扩展在Python Flask应用中创建管理界面。Flask-Admin允许快速实现用户、文件的增删改查等功能,并支持自定义模板以定制界面。通过示例代码展示了如何注册自定义视图、设置菜单和URL,以及如何使用AdminIndexView和FileAdmin类。此外,还探讨了如何通过ActionsMixin实现批量操作,如文件的删除和编辑。
摘要由CSDN通过智能技术生成

Flask-Admin是Flask框架的一个扩展,用它能够快速创建Web管理界面,它实现了比如用户、文件的增删改查等常用的管理功能;如果对它的默认界面不喜欢,可以通过修改模板文件来定制;

Flask-Admin把每一个菜单(超链接)看作一个view,注册后才能显示出来,view本身也有属性来控制其是否可见;因此,利用这个机制可以定制自己的模块化界面,比如让不同权限的用户登录后看到不一样的菜单;

项目地址:https://flask-admin.readthedocs.io/en/latest/

example/simple这是最简单的一个样例,可以帮助我们快速、直观的了解基本概念,学会定制Flask-Admin的界面

simple.py:

from flask import Flask

from flask.ext import admin

# Create custom admin view

class MyAdminView(admin.BaseView):

@admin.expose('/')

def index(self):

return self.render('myadmin.html')

class AnotherAdminView(admin.BaseView):

@admin.expose('/')

def index(self):

return self.render('anotheradmin.html')

@admin.expose('/test/')

def test(self):

return self.render('test.html')

# Create flask app

app = Flask(__name__, template_folder='templates')

app.debug = True

# Flask views

@app.route('/')

def index():

return 'Click me to get to Admin!'

# Create admin interface

admin = admin.Admin()

admin.add_view(MyAdminView(category='Test'))

admin.add_view(AnotherAdminView(category='Test'))

admin.init_app(app)

if __name__ == '__main__':

# Start app

app.run()

在这里可以看到运行效果

BaseView

所有的view都必须继承自BaseView:

class BaseView(name=None, category=None, endpoint=None, url=None, static_folder=None, static_url_path=None)

name: view在页面上表现为一个menu(超链接),menu name == 'name',缺省就用小写的class name

category: 如果多个view有相同的category就全部放到一个dropdown里面(dropdown name=='category')

endpoint: 假设endpoint='xxx',则可以用url_for(xxx.index),也能改变页面URL(/admin/xxx)

url: 页面URL,优先级url > endpoint > class name

static_folder: static目录的路径

static_url_path: static目录的URL

anotheradmin.html:

{% extends 'admin/master.html' %}

{% block body %}

Hello World from AnotherMyAdmin!

Click me to go to test view

{% endblock %}

如果AnotherAdminView增加参数endpoint='xxx',那这里就可以写成url_for('xxx.text'),然后页面URL会由/admin/anotheradminview/变成/admin/xxx

如果同时指定参数url='aaa',那页面URL会变成/admin/aaa,url优先级比endpoint高

Admin

class Admin(app=None, name=None, url=None, subdomain=None, index_view=None, translations_path=None, endpoint=None, static_url_path=None, base_template=None)

app: Flask Application Object;本例中可以不写admin.init_app(app),直接用admin = admin.Admin(app=app)是一样的

name: Application name,缺省'Admin';会显示为main menu name('Home'左边的'Admin')和page title

subdomain: ???

index_view: 'Home'那个menu对应的就叫index view,缺省

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值