背景:
flask-admin+flask-wtf在网上可以搜索到很多资料,但有价值的很少,或许是太简单,或者是很少人这么用,或者。。。,本文将作者近礼拜摸索到的一点经验分享出来,给自己做个记录。
材料:
1、Flask==3.1.0
2、flask-babel==4.0.0
3、Flask-SQLAlchemy==3.1.1
4、Flask-WTF==1.2.2
5、WTForms==3.2.1
制作:
1、安装响应库:依托于pip 安装很简单,省略)
2、应用集成:Flask-WTF 无需集成,安装库文件后直接可以使用
3、flask-admin的集成与配置:
a、项目目录如下
b、在admin 目录下创建base_admin.py文件,便于工程化配置
class MyAdminIndexView(AdminIndexView):
# def is_accessible(self):
# return current_user.is_authenticated
# def inaccessible_callback(self, name, **kwargs):
# return redirect('/admin/login')
@expose("/")
def homepage(self):
isAuth = current_user.is_authenticated
return self.render("admin/index.html", isAuth=isAuth)
class BaseAdmin:
# admin视图初始化.
def init_app(app):
admin = Admin(
app,
name=u"AI阅读管理系统",
index_view=MyAdminIndexView(name="首页"),
template_mode='bootstrap3'
)
admin.add_view(MyOrganView(name='机构管理', endpoint="/org"))
admin.add_view(MyUserView(name="用户管理", endpoint="/user", category='系统管理'))
admin.add_view(MyCategoryView(name="权限管理", endpoint="/cate", category='系统管理'))
admin.add_view(MyRoleView(name="角色管理", endpoint="role", category='系统管理'))
admin.add_view(MyAiConfigView(db.session, name='Dify配置', category='Dify管理'))
admin.add_view(MyAiFlowView(db.session, name='Dify工作流', category='Dify管理'))
admin.add_view(DifyFlowTypeView(db.session, name='工作流类型', category='Dify管理'))
admin.add_view(MyUrlsView(name="网站管理", endpoint="/urls", category='AI阅读'))
admin.add_view(MyNewsView(name="今日要闻", endpoint="/news", category='AI阅读'))
return admin
c、 基于flask-admin的视图基础的有2种,自定义视图(BaseView)和模型视图(ModelView)下面分别介绍本文作者理解的2种视图及用法。
自定义视图(BaseView)
1、自定义视图需要集成baseview基类,特点是集成这个基类后增删改查都需要自己去实现
2、务必要实现 @expose('/')的函数重构(默认进入这个视图模块的路径)
3、样例代码: