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

南宁网站开发公司网站建设费用大概多少钱

南宁网站开发公司,网站建设费用大概多少钱,seo快排软件,网络维护年终个人工作总结最近需要用python写一个菜单#xff0c;折腾了两三天才搞定#xff0c;现在记录在此#xff0c;需要的朋友可以借鉴一下。备注#xff1a;文章引用非可执行完整代码#xff0c;仅仅摘录了关键部分的代码环境数据库#xff1a;mysqlpython#xff1a;3.6表结构CREATE TAB…最近需要用python写一个菜单折腾了两三天才搞定现在记录在此需要的朋友可以借鉴一下。备注文章引用非可执行完整代码仅仅摘录了关键部分的代码环境数据库mysqlpython3.6表结构CREATE TABLE tb_menu (id varchar(32) NOT NULL COMMENT 唯一标识,menu_name varchar(40) DEFAULT NULL COMMENT 菜单名称,menu_url varchar(100) DEFAULT NULL COMMENT 菜单链接,type varchar(1) DEFAULT NULL COMMENT 类型,parent varchar(32) DEFAULT NULL COMMENT 父级目录id,del_flag varchar(1) NOT NULL DEFAULT 0 COMMENT 删除标志 0不删除 1已删除,create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间,PRIMARY KEY (id) USING BTREE) ENGINEInnoDB DEFAULT CHARSETutf8 COMMENT菜单表;Python代码Menu对象中有一个子菜单列表的引用“subMenus”类型为list核心代码def set_subMenus(id, menus):根据传递过来的父菜单id递归设置各层次父菜单的子菜单列表:param id: 父级id:param menus: 子菜单列表:return: 如果这个菜单没有子菜单返回None;如果有子菜单返回子菜单列表# 记录子菜单列表subMenus []# 遍历子菜单for m in menus:if m.parent id:subMenus.append(m)# 把子菜单的子菜单再循环一遍for sub in subMenus:menus2 queryByParent(sub.id)# 还有子菜单if len(menus):sub.subMenus set_subMenus(sub.id, menus2)# 子菜单列表不为空if len(subMenus):return subMenuselse: # 没有子菜单了return None测试方法def test_set_subMenus(self):# 一级菜单rootMenus queryByParent()for menu in rootMenus:subMenus queryByParent(menu.id)menu.subMenus set_subMenus(menu.id, subMenus)备注基本流程是先查询一级菜单然后分别把该级菜单的id、和这级菜单的子菜单列表传入set_subMenus方法递归进行子菜单列表的下级菜单设置支持传递菜单Id查询该菜单下面的所有子菜单。传递空字符则从根目录开始查询在“rootMenus ”对象中可以看到完整的菜单树形结构转Json我采用的ORM框架是sqlalchemy直接从数据库中查询出来的Menu对象转Json时会报错。需要重新定义一个DTO类来把Menu对象转成Dto对象。MenuDtoclass MenuDto():def __init__(self, id, menu_name, menu_url, type, parent, subMenus):super().__init__()self.id idself.menu_name menu_nameself.menu_url menu_urlself.type typeself.parent parentself.subMenus subMenusdef __str__(self):return %s(id%s,menu_name%s,menu_url%s,type%s,parent%s) % (self.__class__.__name__, self.id, self.menu_name, self.menu_url, self.type, self.parent)__repr __str__于是重新定义了递归设置子菜单的方法def set_subMenuDtos(id, menuDtos):根据传递过来的父菜单id递归设置各层次父菜单的子菜单列表:param id: 父级id:param menuDtos: 子菜单列表:return: 如果这个菜单没有子菜单返回None;如果有子菜单返回子菜单列表# 记录子菜单列表subMenuDtos []# 遍历子菜单for m in menuDtos:m.name to_pinyin(m.menu_name)if m.parent id:subMenuDtos.append(m)# 把子菜单的子菜单再循环一遍for sub in subMenuDtos:menus2 queryByParent(sub.id)menusDto2 model_list_2_dto_list(menus2,MenuDto(id, menu_name, menu_url, type, parent, subMenus))# 还有子菜单if len(menuDtos):if len(menusDto2):sub.subMenus set_subMenuDtos(sub.id, menusDto2)else: # 没有子菜单删除该节点sub.__delattr__(subMenus)# 子菜单列表不为空if len(subMenuDtos):return subMenuDtoselse: # 没有子菜单了return None备注当一个菜单没有子菜单时删除掉“subMenus”属性否则转Json时会出现空值model_list_2_dto_list 方法可以把Menu列表转成MenuDto列表to_pinyin 是把汉字转成拼音的方法在这里不用关注View层返回Json的方法def get(self):param request.argsid param[id]# 如果id为空查询的是从根目录开始的各级菜单rootMenus queryByParent(id)rootMenuDtos model_list_2_dto_list(rootMenus,MenuDto(id, menu_name, menu_url, type, parent, subMenus))# 设置各级子菜单for menu in rootMenuDtos:menu.name to_pinyin(menu.menu_name)subMenus queryByParent(menu.id)if len(subMenus):subMenuDtos model_list_2_dto_list(subMenus,MenuDto(id, menu_name, menu_url, type, parent, subMenus))menu.subMenus set_subMenuDtos(menu.id, subMenuDtos)else:menu.__delattr__(subMenus)menus_json json.dumps(rootMenuDtos, defaultlambda o: o.__dict__, sort_keysTrue, allow_nanfalse,skipkeystrue)# 需要转字典否则返回的字符串会带有“\”menus_dict json_dict(menus_json)return fullResponse(menus_dict)fullResponsefrom flask import jsonifydef fullResponse(data, msg, code0):if msg :return jsonify({code: code, data: data})elif data :return jsonify({code: code, msg: msg})else:return jsonify({code: code, msg: msg, data: data})备注python中json和字典的含义类似在最后json返回给页面时需要先使用json_dict方法转成dict类型否则返回的字符串中会带有“\”查询结果以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。
http://www.zqtcl.cn/news/413930/

相关文章:

  • 鞍山做网站排名滁州seo
  • 加关键词的网站seo服务外包公司
  • 大丰建站研究网站建设
  • 网站建设维护教程聊城做网站推广地方
  • 郑州七彩网站建设公司怎么样国内老牌的注册代理
  • 衡水外贸网站建设临清轴承网站建设
  • 上街郑州网站建设网站管理建设的需求分析
  • 厦门网站建设策划网站推广的常用方法有哪些
  • 做电脑图标的网站上海定制网站建设公司哪家好
  • 重庆seo网站推广工具济南网页设计师招聘信息
  • 甘肃永靖建设住建局网站深圳网络广告推广公司
  • 台州企业网站搭建电话厦门学网站建设
  • 做易经网站做网站布为网
  • 高端定制开发网站可以做网站的网络
  • 局政务网站建设管理工作总结wordpress ks主题
  • 网站集约化建设的意义网页制作成app
  • 建设银行大厂支行网站专业的营销型网站建设公司
  • 询盘网站苏州建设银行招聘网站
  • 制作网站图片手机网站跳转
  • 装修公司营销网站模板东莞家居网站建设
  • 网站模板建站教程视频德州极速网站建设百家号
  • 专做蔬菜水果的网站自学it从哪里学起
  • 邵阳红网站搭建平台聚合力
  • 滁州网站建设信息推荐软件开发技术方案模板
  • 商务网站建设有哪几个步骤拼多多网页qq登录
  • 厦门商城网站开发宜昌小程序开发公司
  • 东莞沙田网站建设榆林网站建设价格
  • 无锡网站制作建设wordpress写文章模板
  • 企业网站销售提升学历要多少钱
  • 打开建设银行官方网站首页wordpress 站库分离