乐趣区

关于python:Flask-AppBuilder使用-Flask-AppBuilder-快速搭建-Web-后台

Flask-AppBuilder 疾速入门

1. 作用

基于 Flask 框架的, 能够疾速构建蕴含权限治理、CRUD 视图模型及 API 的后盾管理系统的 Web 开发框架。(类 Django)

仓库地址: https://github.com/dpgaspar/F…

2. 我的项目构造

.
+-- app
|   +-- templates      # 模板文件
|   +-- translations   # 国际化文件
|   +-- __init__.py    
|   +-- apis.py        # 资源 API 文件 (自建)
|   +-- models.py      # 数据模型文件
|   +-- views.py       # 视图文件
+-- .gitignore
+-- config.py          # 配置文件
+-- README.rst         # 阐明文档
+-- run.py             # 程序入口 

3. 环境配置阶段

3.1 装置

pip install flask-appbuilder

3.2 初始化

应用以下命令初始化一个 flask 利用

flask fab create-app

而后创立管理员用户

cd first_app
flask fab create-admin

3.3 运行

flask run

4. 根本应用

4.1 罕用配置

  • 利用名称
  • 批改数据库地址
  • 批改认证形式
  • 主题配置
APP_NAME = "My App Name"

SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(basedir, "app.db")

AUTH_TYPE = AUTH_DB

APP_THEME = "bootstrap-theme.css"

4.2 增加简略视图

在 views.py 文件中增加 MyView 类, 并将 MyView 增加上利用路由之上.

其中路由地址为 route_base + expose

has_access 为接口权限设置 (具体的权限须要依据继承的 View 和 User Role 决定)

from flask_appbuilder import AppBuilder, expose, BaseView
from app import appbuilder
from flask_appbuilder import has_access
 
class MyView(BaseView):
    route_base = '/index'

    @expose('/hello')
    def hello(self):
        return 'Hello World'

    @expose('/message/<string:msg>')
    @has_access
    def message(self, msg):
        msg = 'Hello' + msg
        return msg


appbuilder.add_view_no_menu(MyView())

4.3 定义有返回模板的视图

增加 welcome 视图函数

class indexView(BaseView):
    route_base = '/index'

    @expose('/hello')
    def hello(self):
        return 'Hello World'

    @expose('/message/<string:msg>')
    @has_access
    def message(self, msg):
        msg = 'Hello' + msg
        return msg

    @expose('/welcome/<string:msg>')
    @has_access
    def welcome(self, msg):
        msg = 'Hello %s' % (msg)
        return self.render_template('index.html', msg=msg)

增加 index.html 模板至 templates 文件夹下

{% extends "appbuilder/base.html" %}
{% block content %}
    <h1>{{msg}}</h1>
{% endblock %}

重启服务拜访 http://localhost:8080/index/w… 即可看到对应的模板页面

4.4 定义数据库模型

在 models.py 中定义数据模型


class Book(Model):
    id = Column(Integer, primary_key=True)
    name = Column(String(50), unique=True, nullable=False)

    def __repr__(self):
        return self.name

4.5 定义模型对应的后盾治理视图

在 views.py 中定义 ModelView

class BookModelView(ModelView):
    datamodel = SQLAInterface(Book)


appbuilder.add_view(BookModelView, "List Books", icon="fa-address-card-o", category="Books")

重启服务能够在后盾页面看到 Books 一栏

4.6 定义模型对应的 API 视图

新建 apis.py 在 app 目录下, 并且创立 BookModelApi 类增加至 appbuilder 中

class BookModelApi(ModelRestApi):
    resource_name = 'book'
    datamodel = SQLAInterface(Book)


appbuilder.add_api(BookModelApi)

重启服务能够在 http://localhost:8080/swagger/v1 中看到主动生成的 RESTAPI

5. 相干代码地址

退出移动版