layuimini父子菜單-python實現


現在項目使用了laymini的后台框架,非常不錯,美中不足,沒有構建菜單的python示例,遂自己寫了一個,供大家參考:

數據庫表結構

CREATE TABLE `system_menu` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父ID',
  `title` varchar(100) NOT NULL DEFAULT '' COMMENT '名稱',
  `icon` varchar(100) NOT NULL DEFAULT '' COMMENT '菜單圖標',
  `href` varchar(100) NOT NULL DEFAULT '' COMMENT '鏈接',
  `target` varchar(20) NOT NULL DEFAULT '_self' COMMENT '鏈接打開方式',
  `sort` int(11) DEFAULT '0' COMMENT '菜單排序',
  `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '狀態(0:禁用,1:啟用)',
  `remark` varchar(255) DEFAULT NULL COMMENT '備注信息',
  `create_at` timestamp NULL DEFAULT NULL COMMENT '創建時間',
  `update_at` timestamp NULL DEFAULT NULL COMMENT '更新時間',
  `delete_at` timestamp NULL DEFAULT NULL COMMENT '刪除時間',
  PRIMARY KEY (`id`),
  KEY `title` (`title`),
  KEY `href` (`href`)
) ENGINE=InnoDB AUTO_INCREMENT=250 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='系統菜單表';

python 示例

from flask import jsonify, request, Blueprint, json, make_response
from flask_login import login_required, current_user,login_user,logout_user,utils

from app import common
from app import loginManager

from app.models.systemmenu import SystemMenu

def init_api(app):

    @app.route('/xxx/api/v1.0/menus', methods=['GET']) 
    def getMenu():
        systemMenu = SystemMenu()
        menuList = systemMenu.getByStatus(1)

        if menuList:
            homeinfo={"title":"首頁","href":"page/welcome-1.html?t=1"}
            logoinfo={"title":"LAYUI MINI","image":"images/logo.png","href": ""} 

            menuList = buildMenuChild(0, menuList)

# 合成菜單 menuAllList
= dict() menuAllList["homeInfo"] = homeinfo menuAllList["logoInfo"] = logoinfo menuAllList["menuInfo"] = menuList result = make_response(jsonify(menuAllList)) else: result = None return result # 遞歸創建菜單列表 def buildMenuChild(pid,menulist): treeList = dict() node = [] for item in menulist: if (item.pid == pid): nodetmp = {"title":item.title,"icon":item.icon,"href":item.href,"target":item.target} child = buildMenuChild(item.id,menulist) if (child != {}): nodetmp.update({"child":child}) node.append(nodetmp) treeList = node return treeList

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM