当前位置: 首页 > wzjs >正文

徐州集团网站建设流程视频购物网站开发方案

徐州集团网站建设流程,视频购物网站开发方案,wordpress收费查看,广西十佳旅游景区使用FastAPI封装树形结构生成函数:高效处理层级数据 在Web开发中,树形结构是一种常见的数据组织形式,常用于菜单、分类、组织结构等场景。本文将介绍如何使用FastAPI封装一个通用的树形结构生成函数,支持动态选择字段&#xff0c…

使用FastAPI封装树形结构生成函数:高效处理层级数据

在Web开发中,树形结构是一种常见的数据组织形式,常用于菜单、分类、组织结构等场景。本文将介绍如何使用FastAPI封装一个通用的树形结构生成函数,支持动态选择字段,并递归构建树形数据。

需求分析

我们需要实现一个函数,能够根据给定的模型和父节点ID,递归生成树形结构。同时,支持动态选择需要返回的字段,以满足不同场景的需求。

实现思路

  1. 递归查询:从根节点(pid=0)开始,逐层查询子节点。
  2. 动态字段选择:通过fields参数指定需要返回的字段。
  3. 树形结构构建:将查询到的节点数据组织成树形结构。

代码实现

以下是基于FastAPI和Tortoise ORM的实现代码:

from fastapi import FastAPI
from tortoise.contrib.fastapi import register_tortoise
from tortoise.models import Model
from tortoise import fieldsapp = FastAPI()# 示例模型
class Category(Model):id = fields.IntField(pk=True)name = fields.CharField(max_length=255)pid = fields.IntField(default=0)  # 父节点ID# 树形结构生成函数
async def create_tree(model, pid: int = 0, fields: list = None):"""获取树形结构,支持动态选择字段:param model: 数据模型:param pid: 父节点ID:param fields: 需要返回的字段列表:return: 树形结构列表"""# 查询当前层级的节点nodes = await model.filter(pid=pid).values(*fields)tree = []for node in nodes:# 当前节点的数据字典node_data = {field: node[field] for field in fields}# 递归查找子节点children = await create_tree(model, pid=node['id'], fields=fields)if children:node_data['children'] = childrentree.append(node_data)return tree# FastAPI路由示例
@app.get("/tree")
async def get_tree():fields = ["id", "name"]  # 动态选择字段tree = await create_tree(Category, pid=0, fields=fields)return {"tree": tree}# 数据库初始化
register_tortoise(app,db_url="sqlite://:memory:",modules={"models": ["__main__"]},generate_schemas=True,
)if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)

代码解析

  1. 模型定义

    • Category是一个简单的分类模型,包含idnamepid字段。
    • pid表示父节点ID,根节点的pid为0。
  2. create_tree函数

    • 通过model.filter(pid=pid).values(*fields)查询当前层级的节点。
    • 使用递归调用create_tree获取子节点,并将结果添加到children字段中。
    • 返回完整的树形结构。
  3. FastAPI路由

    • /tree接口调用create_tree函数,返回生成的树形结构。
  4. 数据库初始化

    • 使用register_tortoise初始化数据库,并自动生成表结构。

使用示例

启动FastAPI服务后,访问/tree接口,将返回如下格式的树形结构:

{"tree": [{"id": 1,"name": "Root","children": [{"id": 2,"name": "Child 1","children": []},{"id": 3,"name": "Child 2","children": []}]}]
}

前端代码

const defaultProps = {children: "children",label: "name"
};
<el-treeref="step_treeRef" :data="树结构" :props="defaultProps"default-expand-all >
</tree>

总结

通过封装create_tree函数,我们可以轻松生成树形结构,并支持动态选择字段。这种方法适用于各种层级数据的场景,如菜单、分类、组织结构等。结合FastAPI和Tortoise ORM,能够快速构建高效的Web服务。

希望本文对你有所帮助!如果有任何问题或建议,欢迎在评论区交流讨论。🚀


文章转载自:

http://vPddN0cR.nkhdt.cn
http://o444sk67.nkhdt.cn
http://icMcTHz6.nkhdt.cn
http://xeD8rWeL.nkhdt.cn
http://NWAbLR4h.nkhdt.cn
http://gZM9L0yL.nkhdt.cn
http://AGX6DPsg.nkhdt.cn
http://2RdIOymX.nkhdt.cn
http://iE4i6qBR.nkhdt.cn
http://fJ5eVP7M.nkhdt.cn
http://vnKAp6CL.nkhdt.cn
http://sFo9LP5T.nkhdt.cn
http://S62T3Fsi.nkhdt.cn
http://j3gp4XQf.nkhdt.cn
http://qUPcFGkm.nkhdt.cn
http://4iWYPzN5.nkhdt.cn
http://1vbcKVac.nkhdt.cn
http://VMDTteO1.nkhdt.cn
http://Y3kQVDgj.nkhdt.cn
http://2qqArXQX.nkhdt.cn
http://eqbkOOjS.nkhdt.cn
http://24zz2Z4A.nkhdt.cn
http://7V0060no.nkhdt.cn
http://Qm8o2H1E.nkhdt.cn
http://dt2CBdxC.nkhdt.cn
http://OEeFrWiz.nkhdt.cn
http://xUvcj6mw.nkhdt.cn
http://mvwaTfTG.nkhdt.cn
http://Darv4VmR.nkhdt.cn
http://w63Hzr8R.nkhdt.cn
http://www.dtcms.com/wzjs/714609.html

相关文章:

  • 自助微信网站品牌策划方案怎么写
  • 浦东新区建设工程安全质量监督站网站php购物商城源码
  • 字牌标识公司网站网站编号 6019网站构建是什么
  • 一个主机放几个网站路由器建wordpress
  • 国家摄影网站crm客户关系管理平台
  • 青岛网站推广企业专门做试题的网站
  • 深圳网站制作公司哪家好北京专业网站制作流程优势
  • 网站转应用dedecms 网站地图 模板
  • 河南郑州广告公司网站建设滕州市建设网站
  • 仿木鱼网络网站施工企业怎样报考a证
  • 成都市建设路小学网站商企在线营销型网站
  • 国际商业网站松江区网站建设
  • 万能搜索引擎网站上海网站建设公司官网
  • 石家庄长安区网站建设公司电脑做网站服务器改端口
  • 做网站需要了解什么软件软件开发与应用
  • 移动网站cmswordpress theme
  • 网站主页的要素手机网站 底部菜单
  • 导航网站分析网页设计购物网站模板
  • 合益环保东莞网站建设室内设计效果图制作软件
  • 网站建设最新模板下载wordpress them8主题
  • 怎样在国外网站购买新鲜橙花做纯露食品包装设计价格
  • 做网站找什么公司工作淘宝客自己做网站
  • 树形结构网站案例军事新闻最新消息中国南海今天
  • 什么网站能免费做简历世界500强企业排名2022
  • 外贸没有公司 如何做企业网站去哪里注册商标和品牌
  • 做资料分享网站wordpress首页分页
  • 大连金普新区规划建设局网站学生个人网页设计主题
  • 郑州中色十二冶金建设有限公司网站宁波做外贸网站建设
  • 一是加强了网站建设北京市政建设集团有限责任公司网站
  • 软文网站开发成都学生网站制作