阿桂天山的技术小结:Flask对Ztree树节点搜索定位

2023-10-13 08:45

本文主要是介绍阿桂天山的技术小结:Flask对Ztree树节点搜索定位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

话不多说,上图上源码

1.先看效果图

2.前端页面部分:

        1)页面

<!DOCTYPE html>
<HTML><HEAD><TITLE>Ewangda 阿桂天山的Ztree实战</TITLE><meta http-equiv="content-type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="/static/css/bootstrapStyle/bootstrapStyle.css" type="text/css"><link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet" /><script type="text/javascript" src="/static/js/jquery-2.2.0.min.js"></script><script type="text/javascript" src="/static/ztree/js/jquery.ztree.core-3.5.js"></script><script type="text/javascript" src="/static/ztree/js/jquery.ztree.excheck-3.5.js"></script><script type="text/javascript" src="/static/ztree/js/jquery.ztree.exedit-3.5.js"></script><!--  gtj 实现对ztree节点筛选功能用  --><script type="text/javascript" src="/static/ztree/js/jquery.ztree.exhide-3.5.js"></script></HEAD><BODY><h2>具有搜索定位功能的Ztree</h2><div class="input-group" style="width:300px"><input type="text" id="search-input" onkeyup="autoMatchForZtree();" class="form-control" placeholder="模糊查询" style="border: 1px solid #cccccc; border-right: 0;"/><div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div></div><ul id="treeDemo" class="ztree"></ul>
</BODY></HTML>

        2)前端javascript脚本

<script >
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
var setting = {view: {selectedMulti: false},check: {enable: true},data: {simpleData: {enable: true}},
};$(document).ready(function() {$.getJSON($SCRIPT_ROOT+'/_get_tree','',function(data){var zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, data);zTreeObj.expandAll(true); //---gtj 所有节点都会默认展开})});/*** 功能:gtj 搜索匹配树节点 ***/
function searchChildren(keyword, children){if(children == null || children.length == 0){return false;}for(var i = 0; i < children.length; i++){var node = children[i];if(node.name.indexOf(keyword) != -1 && node.isHidden === false){return true;}var result = searchChildren(keyword, node.children);if(result){return true;}}return false;
}function searchParent(keyword, node){if(node == null){return false;}if(node.name.indexOf(keyword) != -1 && node.isHidden === false){return true;}return searchParent(keyword, node.getParentNode());
}var hiddenNodesForZtree = [];function autoMatchForZtree(){setTimeout(function(){var ztreeObj = $.fn.zTree.getZTreeObj("treeDemo");ztreeObj.showNodes(hiddenNodesForZtree);function filterFunc(node){var keyword = $("#search-input").val();if(searchParent(keyword, node) || searchChildren(keyword, node.children)){return false;}return true;};hiddenNodesForZtree = ztreeObj.getNodesByFilter(filterFunc);ztreeObj.hideNodes(hiddenNodesForZtree);}, 300);
}</script>

3.后端Flask代码

        1)searchztree.py

#=============================================================
#---------------------阿桂天山 Ewangda--------------------------
import op_sql
import jsonfrom flask import Flask, render_template, requestapp = Flask(__name__)# 前端主页面
@app.route('/')
def searchztree():return render_template('searchztree.html')# 后台返回所有数据
@app.route('/_get_tree')
def get_tree():return json.dumps(op_sql.transport())# 启动主页面
if __name__ == "__main__":app.run(debug=True)

        2)连接数据库获取数据:

                2.1)mysql建表语句及测试数据

CREATE TABLE `t_ztree` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT NULL,`pId` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of t_ztree
-- ----------------------------
INSERT INTO t_ztree VALUES ('1', 'Ewangda', '0');
INSERT INTO t_ztree VALUES ('2', '数智化服务', '1');
INSERT INTO t_ztree VALUES ('3', '创新视觉服务', '1');
INSERT INTO t_ztree VALUES ('4', '精准系列', '2');
INSERT INTO t_ztree VALUES ('5', '精细系列', '2');
INSERT INTO t_ztree VALUES ('8', 'EDS企业数字服务平台', '4');
INSERT INTO t_ztree VALUES ('9', 'PDS精准数字服务云平台', '4');
INSERT INTO t_ztree VALUES ('23', '精工系列', '2');
INSERT INTO t_ztree VALUES ('36', '精致系列', '3');
INSERT INTO t_ztree VALUES ('37', 'AR智能电商', '36');
INSERT INTO t_ztree VALUES ('38', '精彩系列', '3');
INSERT INTO t_ztree VALUES ('39', '大屏展示', '38');
INSERT INTO t_ztree VALUES ('40', '智能美唇', '37');
INSERT INTO t_ztree VALUES ('41', '智能靓镜', '37');

        2.2)生成ztree数据函数文件op_sql.py

def query(sql_select):conn = pymysql.connect(user="aaa", password="123xxxx", host="127.0.0.1", database="test-ztree")cursor = conn.cursor()try:cursor.execute(sql_select)result = cursor.fetchall()return resultfinally:conn.close()# 将数据库查询数据标准化json数据以便传入后台
def transport():zNdodes = []for i in query("select id, name, pId from t_ztree;"):zNdode = {}zNdode['id'] = i[0]zNdode['name'] = i[1]zNdode['pId'] = i[2]zNdodes.append(zNdode)return zNdodes

总结:所有内容都在这了,对你有用给个赞吧!!!

最后要注意:要让树节点能被筛选,一定要有ztree.exhide库

             

这篇关于阿桂天山的技术小结:Flask对Ztree树节点搜索定位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/202061

相关文章

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用