企业级FastAPI后端模板搭建(五)初始化数据 搭建文件结构创建core/insert_data.py文件代码如下fromlogimportloggerasyncdefinit_dept():logger.info( 开始新增部门...)asyncdefinit_superuser():logger.info( 开始初始化超级管理员用户...)asyncdefinit_menus():logger.info( 开始初始化系统菜单...)asyncdefinit_apis():logger.info( 开始初始化API数据...)asyncdefinit_roles():logger.info( 开始初始化用户角色...)asyncdefinit_insert_data():awaitinit_dept()awaitinit_superuser()awaitinit_menus()awaitinit_apis()awaitinit_roles()修改core/init_app.py文件from.insert_dataimportinit_insert_data ···asyncdefinit_data():logger.info( 系统初始化开始...)logger.info( 开始数据库初始化和迁移...)awaitinit_db()logger.info(✅ 数据库初始化完成)awaitinit_insert_data()logger.info( 系统初始化完成)初始化部门数据frommodels.adminimportDept...asyncdefinit_dept():logger.info( 开始新增部门...)deptsawaitDept.exists()ifnotdepts:awaitDept.create(name研发部门,codeYFBM,parent_id0,tree_path0,sort1,)logger.info(✅ 部门创建成功 - 部门: 研发部门)else:logger.info(ℹ️ 部门已存在跳过创建)运行之后数据库会添加对应数据初始化超级管理员用户frommodels.adminimportDept,User...asyncdefinit_superuser():logger.info( 开始初始化超级管理员用户...)userawaitUser.exists()ifnotuser:awaitUser.create(accountadmin,username超级管理员,emailadminadmin.com,passwordabcd1234,dept_id1,is_activeTrue,is_superuserTrue,)logger.info(✅ 超级管理员用户创建成功 - 用户名: admin)else:logger.info(ℹ️ 超级管理员用户已存在跳过创建)运行之后数据库会添加对应数据初始化系统菜单frommodels.adminimportDept,User,Menufromschemas.menusimportMenuType...asyncdefinit_menus():logger.info( 开始初始化系统菜单...)menusawaitMenu.exists()ifnotmenus:parent_menuawaitMenu.create(typeMenuType.CATALOG,title系统管理,path/system,sort1,parent_id0,visibleTrue,componentLayout,keep_aliveFalse,redirect/system/user,)children_menu[Menu(typeMenuType.MENU,title用户管理,pathuser,sort1,parent_idparent_menu.id,visibleTrue,componentsystem/user/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title角色管理,pathrole,sort2,parent_idparent_menu.id,visibleTrue,componentsystem/role/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title菜单管理,pathmenu,sort3,parent_idparent_menu.id,visibleTrue,componentsystem/menu/index,keep_aliveFalse,),Menu(typeMenuType.MENU,titleAPI管理,pathapi,sort4,parent_idparent_menu.id,visibleTrue,componentsystem/api/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title部门管理,pathdept,sort5,parent_idparent_menu.id,visibleTrue,componentsystem/dept/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title操作日志,pathlog,sort6,parent_idparent_menu.id,visibleTrue,componentsystem/log/index,keep_aliveFalse,),]awaitMenu.bulk_create(children_menu)logger.info(✅ 系统菜单初始化成功 - 菜单数量: 7)else:logger.info(ℹ️ 系统菜单已存在跳过初始化)运行之后数据库会添加对应数据初始化APIfrommodels.adminimportDept,User,Menu,Apifromfastapi.routingimportAPIRoute...asyncdefinit_apis():logger.info( 开始初始化API数据...)apisawaitApi.exists()ifnotapis:frommainimportapp routesapp.routesforrouteinroutes:ifisinstance(route,APIRoute):methodlist(route.methods)[0]pathroute.path_format summaryroute.summary tagslist(route.tags)[0]awaitApi.create(**dict(methodmethod,pathpath,summarysummary,tagstags,))else:api_countawaitApi.all().count()logger.info(fℹ️ API数据已存在跳过初始化 - 当前API数量:{api_count})运行之后数据库会添加对应数据初始化用户角色frommodels.adminimportDept,User,Menu,Api,Rolefromtortoise.expressionsimportQ...asyncdefinit_roles():logger.info( 开始初始化用户角色...)rolesawaitRole.exists()ifnotroles:admin_roleawaitRole.create(name系统管理员,codeADMIN,sort1,desc系统管理员,)user_roleawaitRole.create(name普通用户,codeGUEST,sort2,desc普通用户,)# 分配所有API给管理员角色all_apisawaitApi.all()awaitadmin_role.apis.add(*all_apis)# 分配所有菜单给管理员和普通用户all_menusawaitMenu.all()awaitadmin_role.menus.add(*all_menus)awaituser_role.menus.add(*all_menus)# 为普通用户分配基本APIbasic_apisawaitApi.filter(Q(method__in[GET])|Q(tags基础模块))awaituser_role.apis.add(*basic_apis)logger.info(✅ 用户角色初始化成功 - 角色: 管理员, 普通用户)else:role_countawaitRole.all().count()logger.info(fℹ️ 用户角色已存在跳过初始化 - 当前角色数量:{role_count})运行之后数据库会添加对应数据sys_role表sys_role_api表sys_role_menu表

相关新闻

最新新闻

探索FinalBurn Neo:打造完美街机游戏模拟体验的终极方案

探索FinalBurn Neo:打造完美街机游戏模拟体验的终极方案

探索FinalBurn Neo:打造完美街机游戏模拟体验的终极方案 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo 你是否怀念那些在街机厅度过的美好时光?是否想在现代设备上重温《街头霸…

2026/7/5 16:08:35
Deforum终极指南:如何快速掌握Stable Diffusion动画生成扩展

Deforum终极指南:如何快速掌握Stable Diffusion动画生成扩展

Deforum终极指南:如何快速掌握Stable Diffusion动画生成扩展 【免费下载链接】sd-webui-deforum Deforum extension for AUTOMATIC1111s Stable Diffusion webui 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-deforum Deforum扩展是AUTOMATIC1111 …

2026/7/5 16:08:35
三步获取官方电子课本:你的智能教材下载助手

三步获取官方电子课本:你的智能教材下载助手

三步获取官方电子课本:你的智能教材下载助手 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目地址: https:/…

2026/7/5 16:08:35
SAM 3.1图像分割革命:多对象跟踪与智能概念识别的突破

SAM 3.1图像分割革命:多对象跟踪与智能概念识别的突破

SAM 3.1图像分割革命:多对象跟踪与智能概念识别的突破 【免费下载链接】sam3.1 项目地址: https://ai.gitcode.com/hf_mirrors/facebook/sam3.1 当你在处理视频分析或图像分割任务时,是否曾为多对象跟踪的速度瓶颈而烦恼?传统的分割模…

2026/7/5 16:08:35
如何快速配置开源PS2模拟器:PCSX2新手指南与性能优化

如何快速配置开源PS2模拟器:PCSX2新手指南与性能优化

如何快速配置开源PS2模拟器:PCSX2新手指南与性能优化 【免费下载链接】pcsx2 PCSX2 - The Playstation 2 Emulator 项目地址: https://gitcode.com/GitHub_Trending/pc/pcsx2 想要在电脑上重温经典PS2游戏却不知从何开始?PCSX2作为功能强大的开源…

2026/7/5 16:08:35
5分钟掌握SLua:Unity游戏开发中最高效的Lua绑定框架

5分钟掌握SLua:Unity游戏开发中最高效的Lua绑定框架

5分钟掌握SLua:Unity游戏开发中最高效的Lua绑定框架 【免费下载链接】slua Fastest lua binding via static code generating for Unity3D and mono. 项目地址: https://gitcode.com/gh_mirrors/sl/slua 如果你正在Unity中寻找一个既高效又易用的Lua绑定解决…

2026/7/5 16:03:35

月新闻