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

时间:2022-01-26 11:34:38

简介:

Flask-admin 相当django的xadmin吧!

快速装配一个后台用来管理数据。

Flask-admin也是有使用局限性的,他只适合开发小型快速的应用,不适合那种大型并发性高,逻辑复杂的应用。首先,对于大型应用都是前后端分离的,加快访问速度,而且后端装配,尤其是这种动态生成页面的速度更慢。

需要安装Flask-Admin,Flask-BabelEx,

一:导入admin

1.导入

from flask import Flask
from app.main.views import *
from app.app01.views import *
from app.app02.views import *
from flask_admin import Admin #此行新加 app = Flask(__name__) admin = Admin(app, name='管理后台', template_mode='bootstrap3') #此行新加 app.register_blueprint(main)
app.register_blueprint(main,url_prefix='/index')
app.register_blueprint(app01,url_prefix='/app01')
app.register_blueprint(app02,url_prefix='/app02')
app.register_blueprint(app01,url_prefix='/app03')
app.register_blueprint(app02,url_prefix='/app04')
app.register_blueprint(app02) @app.teardown_appcontext
def shutdown_session(exception=None):
db_session.remove() if __name__=='__main__':
app.run()

只要增加这两行就可以了。

2.测试

访问http://127.0.0.1:5000/admin/

就可以看到了。

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

3.中文标题

admin = Admin(app, name='管理后台', template_mode='bootstrap3') #此行新加
这里的name就是后台的标题。

二:注册model

1.引入:

from flask_admin.contrib.sqla import ModelView

页首引入即可

2.注册model

admin.add_view(ModelView(public, db_session,name='test'))

一行引入一个model,既表。

public是声明的model类名。

db_session,是在config中声明的数据库连接。

name是小标题。

3.测试:

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

比刚才多了一个public

点进去以后

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

有创建,修改,删除这样的功能。

三:汉化

1.引入Flask-BabelEx

from flask_babelex import Babel

2.设置

babel = Babel(app)
app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN'

在app = Flask(__name__)后面插入就可以了

3.测试

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

四:把表名改中文

1.原代码:

admin.add_view(ModelView(public, db_session))

2.新代码:

admin.add_view(ModelView(public, db_session,name='用户管理'))

3.说明:

在注册表给后台的时候,加上name属性,就改为中文了。

五:把列名改为中文

1.简介:

我们的列名是ModelView自动读取的,如果要修改列名,那么我们就新建一个类继承ModelView,然后在我们的类中修改。

2.建立:

class MyPublic(ModelView):

    column_labels = {
'id':'序号',
'public_name' : '用户名',
'public_email':'电子邮箱',
}
column_list = ('id', 'public_name','public_email')
def __init__(self, session, **kwargs):
super(MyPublic, self).__init__(public, session, **kwargs)

为了方便对照model,我把这部分代码和model声明放在一起了。

3.修改

因为是每个表都要分开设置列名,使用新的继承类对应不同的表。所以,引入方式也要修改。

原代码:

admin.add_view(ModelView(public,db_session,name='用户管理'))

新代码:

admin.add_view(MyPublic(db_session,name='用户管理'))

说明:

我们新建的类已经继承了ModelView,并在内部关联了public类,所以注册的时候要改ModeView为MyPublic,并不需要声明表名类了。

六:菜单下拉

1.

# Add views
admin.add_view(ModelView(Point, db.session, category='Points'))
admin.add_view(ModelView(MultiPoint, db.session, category='Points'))
admin.add_view(ModelView(Polygon, db.session, category='Polygons'))
admin.add_view(ModelView(MultiPolygon, db.session, category='Polygons'))
admin.add_view(ModelView(LineString, db.session, category='Lines'))
admin.add_view(ModelView(MultiLineString, db.session, category='Lines'))

2.

3.

七:

1.

2.

3.

八:

1.

2.

3.

九:

1.

2.

3.

十:

1.

2.

3.