
class getcontentTag(MethodView):
def get(self):
try:
_sql_cate = "SELECT * FROM cate_a"
cate_res = db.session.execute(text(_sql_cate)).fetchall()
_sql_tag = "SELECT * FROM tag_a"
tag_res = db.session.execute(text(_sql_tag)).fetchall()
#将查询结果转换为字典列表
categories = [dict(row._asdict()) for row in cate_res]
tags = [dict(row._asdict()) for row in tag_res]
# 构建类别字典,key为id,value为类别信息
category_dict = {category['id']: category for category in categories}
# print(category_dict)
# # 初始化children列表
for category in categories:
# 空列表,存储子标签
category['children'] = []
# print(category)
# #将标签添加到对应的类别中
for tag in tags:
# print(tag)
# # 如pid在category_dict中,则将标签添加到对应的类别中
if tag['pid'] in category_dict:
# # 将标签添加到对应的类别的children列表中
category_dict[tag['pid']]['children'].append(tag)
# # 提取根类别
result = [category for category in categories if category['pid'] == 0]
return jsonify({'code': Code.OK, 'msg': code_desc[Code.OK], 'data':result})
except Exception as e:
return jsonify({'code': Code.ERROR, 'msg': code_desc[Code.ERROR], 'data': None})
{
"code": 200,
"data": [
{
"children": [
{
"id": 1,
"name": "体育鞋测评",
"pid": 1
},
{
"id": 2,
"name": "耳机评测",
"pid": 1
}
],
"id": 1,
"name": "产品评测",
"pid": 0
},
{
"children": [
{
"id": 3,
"name": "扑克",
"pid": 2
},
{
"id": 4,
"name": "打游戏",
"pid": 2
},
{
"id": 5,
"name": "打架",
"pid": 2
}
],
"id": 2,
"name": "休闲娱乐",
"pid": 0
},
{
"children": [
{
"id": 6,
"name": "伊斯兰教",
"pid": 3
}
],
"id": 3,
"name": "宗教与信仰",
"pid": 0
},
{
"children": [
{
"id": 7,
"name": "暖通空调",
"pid": 4
}
],
"id": 4,
"name": "暖通空调",
"pid": 0
},
{
"children": [
{
"id": 8,
"name": "特斯拉",
"pid": 5
},
{
"id": 9,
"name": "福特",
"pid": 5
},
{
"id": 10,
"name": "宝马",
"pid": 5
}
],
"id": 5,
"name": "汽车",
"pid": 0
}
],
"msg": "success"
}