pythonFlask想做下拉二级菜单

我现在的HTML代码:

<!-- 顶部菜单 -->
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav navbar-link">
                    <li><a href="###" onclick="showAtRight('/product/list')"><i class="fa fa-users"></i>1小时</a></li>
                    <li><a href="###" onclick="showAtRight('/ererer/list')"><i class="fa fa-list"></i>2小时</a></li>
                    <li><a href="###" onclick="showAtRight('/record/list')"><i class="fa fa-list-alt"></i>3小时</a></li>
                    <li><a href="###" onclick="showAtRight('/user/list')"><i class="fa fa-list"></i>6小时</a></li>
                    <li><a href="###" onclick="showAtRight('/test/list')"><i class="fa fa-users"></i>12小时</a></li>
                    <li><a href="###" onclick="showAtRight('/ersi/list')"><i class="fa fa-users"></i>24小时</a></li>
                    <li><a href="###" ><i></i>    </a></li>
                    <li><a href="###" onclick="showAtRight('/shanOne/list')"><i></i>山洪1小时</a></li>
                    <li><a href="###" onclick="showAtRight('/shanTwe/list')"><i></i>山洪2小时</a></li>
                    <li><a href="###" onclick="showAtRight('/shanThree/list')"><i></i>山洪3小时</a></li>
                    <li><a href="###" onclick="showAtRight('/shanSix/list')"><i></i>山洪6小时</a></li>
                    <li><a href="###" onclick="showAtRight('/shanShier/list')"><i></i>山洪12小时</a></li>
                    <li><a href="###" onclick="showAtRight('/shanErsi/list')"><i></i>山洪24小时</a></li>
                </ul>
            </div>
        </div>
    </nav>

    <!-- 右侧内容 -->
    <div class="main">
        <h1 class="page-header"><i class="fa fa-cog fa-spin"></i>雨量排序<small>   恩施州实时雨量排序
            </small></h1>
            <!-- 载入左侧菜单指向的jsp(或html等)页面内容 -->
            <div id="content">
                <h4>
                    <strong>恩施州实时雨量排序:</strong><br>
                    <br><br>     以当前时间为准,实时雨量排序
                    <br><br>
                </h4>
            </div>
    </div>

部分CSS代码:

  .navbar {
    display: none;
  }

.navbar {
  position: relative;
  min-height: 50px;
  margin-bottom: 20px;
  border: 1px solid transparent;
}

@media (min-width: 768px) {
  .navbar {
    border-radius: 4px;
  }
}

.navbar:before,
.navbar:after {
  display: table;
  content: " ";
}

.navbar:after {
  clear: both;
}

@media (min-width: 768px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}

.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}

  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }

我做出来的页面是这样的:

img

我是想在每一个菜单选项加一个二级菜单,鼠标移过去会出现下拉菜单,譬如这样的:

img


所以想问一下,二级下拉菜单怎么弄、我是自己用的python Flask框架搭的

在前面自己引入下jQuery和Bootstrap的相关文件

<!DOCTYPE html>
<html>
<head>
    <title>雨量排序</title>
    <style>
        .navbar {
            display: none;
        }

        .navbar {
            position: relative;
            min-height: 50px;
            margin-bottom: 20px;
            border: 1px solid transparent;
        }

        @media (min-width: 768px) {
            .navbar {
                border-radius: 4px;
            }
        }

        .navbar:before,
        .navbar:after {
            display: table;
            content: " ";
        }

        .navbar:after {
            clear: both;
        }

        @media (min-width: 768px) {
            .navbar-fixed-top,
            .navbar-fixed-bottom {
                border-radius: 0;
            }
        }

        .navbar-fixed-top,
        .navbar-fixed-bottom {
            position: fixed;
            right: 0;
            left: 0;
            z-index: 1030;
        }

        .navbar-collapse.collapse {
            display: block !important;
            height: auto !important;
            padding-bottom: 0;
            overflow: visible !important;
        }

        .main {
            margin-top: 60px;
            padding: 20px;
        }
    </style>
</head>
<body>
    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">雨量排序</a>
            </div>
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a href="#">1小时</a></li>
                    <li><a href="#">12小时</a></li>
                    <li><a href="#">24小时</a></li>
                    <li><a href="#">山洪1小时</a></li>
                    <li><a href="#">山洪2小时</a></li>
                    <li><a href="#">山洪3小时</a></li>
                    <li><a href="#">山洪6小时</a></li>
                    <li><a href="#">山洪12小时</a></li>
                    <li><a href="#">山洪24小时</a></li>
                </ul>
            </div>
        </div>
    </nav>

    <div class="main">
        <h1 class="page-header"><i class="fa fa-cog fa-spin"></i>雨量排序<small>   恩施州实时雨量排序
            </small></h1>
        <div id="content">
            <h4>
                <strong>恩施州实时雨量排序:</strong><br>
                <br><br>     以当前时间为准,实时雨量排序
                <br><br>
            </h4>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</body>
</html>


这个flask都没关,就是一个html+css控制就行了。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>二级菜单</title>
        <style>
            ul li{
                list-style: none;
                /* 清除列表原有样式 */
            }
            .menu{
                width: 600px;
                height: 60px;
                background-color: aquamarine;
            }
            .menu ul li{
                float: left;
                /* 使列表(一级菜单)横向 */
                margin-right: 50px;
                margin-top: 20px;
                /* 设置一级菜单内容的位置 */
                position: relative;
            }
            .menu ul li ul{
                width: 100px;
                height: 160px;
                margin-left: -50px;
                background-color: #7FFFD4;
                display: none;
                /* 设置初始为不显示 */
                position: absolute;
            }
            .menu ul li:hover ul{
                display: block;
                /* 当一级菜单的li获取hover后将二级菜单的ul显示出来 */
            }
        </style>
        <link rel="stylesheet" type="text/css" href="css/index.css"/>
    </head>
    <body>
        <div class="menu">
            <ul>
                <li>首页</li>
                <li>博客
                    <ul>
                        <li>博客1</li>
                        <li>博客2</li>
                        <li>博客3</li>
                    </ul>
                </li>
                <!-- 注意:需要将二级菜单的ul放在一级菜单的li标签内 -->
                <li>新闻
                <ul>
                    <li>国内</li>
                    <li>国际</li>
                    <li>体育</li>
                </ul>
                </li>
                <li>账户</li>
            </ul>
        </div>
    </body>
</html>

下面是一个使用 Flask 框架实现二级下拉菜单的示例代码:

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('index.html')
if __name__ == '__main__':
    app.run(debug=True)

在上面的代码中,我们首先导入 Flask 框架,并创建一个 Flask 应用实例。然后,我们定义了一个名为 index() 的路由处理函数,该函数返回一个名为 index.html 的模板。在模板中,我们可以使用 HTML 和 Jinja2 模板引擎来创建下拉菜单。

下面是一个简单的 index.html 模板,它包含了一个包含两个下拉菜单的表单:

<!DOCTYPE html>
<html>
<head>
    <title>二级下拉菜单</title>
</head>
<body>
    <form method="post">
        <select name="province">
            {% for province in provinces %}
            <option value="{{ province }}">{{ province }}</option>
            {% endfor %}
        </select>
        <select name="city">
            {% for city in cities %}
            <option value="{{ city }}">{{ city }}</option>
            {% endfor %}
        </select>
        <input type="submit" value="提交">
    </form>
</body>
</html>


在上面的模板中,我们使用了两个下拉菜单,分别名为 province 和 city。在 province 下拉菜单中,我们使用了一个循环来遍历省份列表,并生成一个选项。在 city 下拉菜单中,我们使用了一个循环来遍历城市列表,并生成一个选项。当用户提交表单时,Flask 会接收到 province 和 city 的值,并根据这些值进行进一步的处理。

为了使 Flask 能够渲染这个模板,我们需要定义一些变量,例如省份和城市列表。下面是一个示例代码:


provinces = ['北京', '上海', '广东', '浙江']
cities = {
    '北京': ['朝阳区', '海淀区', '丰台区'],
    '上海': ['浦东新区', '徐汇区', '长宁区'],
    '广东': ['广州', '深圳', '珠海'],
    '浙江': ['杭州', '宁波', '温州']
}

在上面的代码中,我们定义了一个名为 provinces 的列表,其中包含了四个省份的名称。我们还定义了一个名为 cities 的字典,其中包含了每个省份的城市列表。例如,在北京的选项被选中时,城市下拉菜单会显示朝阳区、海淀区和丰台区三个选项。同样地,在上海的选项被选中时,城市下拉菜单会显示浦东新区、徐汇区和长宁区三个选项。

这个只改一下js就行吧,你只需要对HTML代码进行一些修改,并使用CSS和JavaScript来实现下拉效果。以下是一个示例的修改方案:

首先,修改HTML代码,为每个菜单项添加一个下拉菜单。您可以使用<ul><li>元素来创建嵌套的菜单结构。示例代码如下:

<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container">
        <div id="navbar" class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-link">
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                        <i class="fa fa-users"></i>1小时 <b class="caret"></b>
                    </a>
                    <ul class="dropdown-menu">
                        <li><a href="#">子菜单1</a></li>
                        <li><a href="#">子菜单2</a></li>
                        <!-- 添加更多子菜单项 -->
                    </ul>
                </li>
                <!-- 添加其他菜单项 -->
            </ul>
        </div>
    </div>
</nav>

接下来,您需要添加必要的CSS和JavaScript代码来处理下拉菜单的显示和隐藏。确保在页面上引入相关的CSS和JavaScript文件。如果您使用的是Bootstrap框架,通常它已经包含了所需的样式和脚本。
最后,在JavaScript代码中,您可以使用Bootstrap的下拉菜单插件来实现下拉效果。示例代码如下:

<script>
    $(document).ready(function(){
        $('.dropdown-toggle').dropdown();
    });
</script>

请确保在引入这段JavaScript代码之前,已经引入了jQuery库和Bootstrap的JavaScript文件。

通过上述修改,您应该能够在Flask应用中实现下拉二级菜单的效果。记得根据您的实际需求修改菜单项和子菜单的内容。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

关键就是<select>标签的运用,跟你框架没多大关系
https://stackoverflow.com/questions/45877080/how-to-create-dropdown-menu-from-python-list-using-flask-and-html?%ra=card



<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>二级菜单</title>
        <style>
            ul li{
                list-style: none;
                /* 清除列表原有样式 */
            }
            .menu{
                width: 600px;
                height: 60px;
                background-color: aquamarine;
            }
            .menu ul li{
                float: left;
                /* 使列表(一级菜单)横向 */
                margin-right: 50px;
                margin-top: 20px;
                /* 设置一级菜单内容的位置 */
                position: relative;
            }
            .menu ul li ul{
                width: 100px;
                height: 160px;
                margin-left: -50px;
                background-color: #7FFFD4;
                display: none;
                /* 设置初始为不显示 */
                position: absolute;
            }
            .menu ul li:hover ul{
                display: block;
                /* 当一级菜单的li获取hover后将二级菜单的ul显示出来 */
            }
        </style>
        <link rel="stylesheet" type="text/css" href="css/index.css"/>
    </head>
    <body>
        <div class="menu">
            <ul>
                <li>首页</li>
                <li>博客
                    <ul>
                        <li>博客1</li>
                        <li>博客2</li>
                        <li>博客3</li>
                    </ul>
                </li>
                <!-- 注意:需要将二级菜单的ul放在一级菜单的li标签内 -->
                <li>新闻
                <ul>
                    <li>国内</li>
                    <li>国际</li>
                    <li>体育</li>
                </ul>
                </li>
                <li>账户</li>
            </ul>
        </div>
    </body>
</html>

前端就能搞定了,html+css。

【以下回答由 GPT 生成】

要在Python Flask中实现下拉二级菜单,你可以使用Bootstrap框架的组件来创建下拉菜单。以下是一种实现方式:

  1. 首先,确保你的项目中已经安装了Bootstrap框架。可以使用CDN来引入Bootstrap,或者在静态文件中下载并引入框架文件。

  2. 在Flask应用程序的HTML模板文件中,将菜单项包裹在一个下拉菜单的<li>元素中。在该<li>元素中,添加一个带有dropdown类的<div>元素来定义下拉菜单。例如:

    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav navbar-link">
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">菜单 <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">下拉菜单项一</a></li>
                            <li><a href="#">下拉菜单项二</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
  1. 现在,你的菜单项已经包含一个下拉菜单。但是,点击菜单项时下拉菜单不会弹出。为了使下拉菜单正常工作,你需要引入Bootstrap的JavaScript文件。确保在模板文件的底部引入以下脚本:
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.7.2/dist/js/bootstrap.bundle.min.js"></script>
  1. 刷新你的应用程序,你应该能看到一个下拉菜单。

  2. 如果你想添加二级下拉菜单,只需在一级下拉菜单的<li>元素中嵌套另一个下拉菜单即可。例如:

    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav navbar-link">
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">菜单 <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">下拉菜单项一</a></li>
                            <li class="dropdown-submenu">
                                <a href="#" class="dropdown-toggle" data-toggle="dropdown">二级下拉菜单 <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    <li><a href="#">二级下拉菜单项一</a></li>
                                    <li><a href="#">二级下拉菜单项二</a></li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </nav>

注意,二级下拉菜单的父菜单项也需要添加dropdown-submenu类。

这样,你就可以在Python Flask中实现下拉二级菜单了。如果你对此还有疑问,请告诉我。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

给你个参考

<!DOCTYPE html>
<html>
<head>
    <title>下拉二级菜单示例</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>下拉二级菜单示例</h1>
    
    <select id="primaryDropdown">
        <option value="option1">选项 1</option>
        <option value="option2">选项 2</option>
    </select>
    
    <select id="secondaryDropdown">
        <!-- 二级菜单内容将通过 JavaScript 动态添加 -->
    </select>
    
    <script>
        $(document).ready(function () {
            // 当一级下拉菜单选项改变时触发
            $('#primaryDropdown').on('change', function () {
                var selectedValue = $(this).val();
                // 在这里你可以根据选中的值来动态添加二级下拉菜单的选项
                // 这里只是一个简单的示例
                if (selectedValue === 'option1') {
                    $('#secondaryDropdown').html(`
                        <option value="subOption1">子选项 1</option>
                        <option value="subOption2">子选项 2</option>
                    `);
                } else if (selectedValue === 'option2') {
                    $('#secondaryDropdown').html(`
                        <option value="subOption3">子选项 3</option>
                        <option value="subOption4">子选项 4</option>
                    `);
                } else {
                    $('#secondaryDropdown').html(''); // 清空二级下拉菜单
                }
            });
        });
    </script>
</body>
</html>


from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)


flask 添加下拉导航
可以参考下


https://www.jianshu.com/p/fae8e30ae758

这个是html吧?不是python

引用gpt作答
要在 Python Flask 中实现下拉二级菜单,您可以使用HTML和CSS来创建菜单,并使用JavaScript来实现悬停效果。以下是一个简单的示例供参考:

  1. 首先,在HTML文件中创建菜单结构:
<nav>
  <ul class="menu">
    <li><a href="/">Home</a></li>
    <li><a href="#">Products</a>
      <ul class="submenu">
        <li><a href="/category1">Category 1</a></li>
        <li><a href="/category2">Category 2</a></li>
      </ul>
    </li>
    <li><a href="/about">About</a></li>
    <li><a href="/contact">Contact</a></li>
  </ul>
</nav>

  1. 然后,在CSS文件中定义菜单样式和下拉菜单的隐藏和显示效果:
nav {
  display: flex;
  justify-content: center;
}

ul.menu {
  list-style: none;
  display: flex;
}

ul.menu li {
  position: relative;
  margin-right: 20px;
}

ul.menu li:hover > ul.submenu {
  display: block;
}

ul.menu li ul.submenu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  list-style: none;
}

ul.menu li ul.submenu li {
  background-color: #f1f1f1;
  margin-top: 5px;
}

ul.menu li ul.submenu li a {
  display: block;
  padding: 5px;
  text-decoration: none

  1. 最后,使用JavaScript代码来实现悬停效果:
// 在DOM加载完成后运行JavaScript代码
document.addEventListener("DOMContentLoaded", function() {
  // 获取所有带有子菜单的父元素
  var parentItems = document.querySelectorAll("ul.menu li");

  // 添加鼠标悬停事件监听器
  parentItems.forEach(function(item) {
    item.addEventListener("mouseenter", function() {
      // 显示下级菜单
      this.querySelector("ul.submenu").style.display = "block";
    });

    item.addEventListener("mouseleave", function() {
      // 隐藏下级菜单
      this.querySelector("ul.submenu").style.display = "none";
    });
  });
});

在完成上述步骤后,您可以将这些代码集成到您的 Flask 应用程序中,然后根据您的路由设置和模板文件进行适当的调整。当鼠标悬停在一级导航上时,会自动显示相应的二级下拉菜单。

结合GPT给出回答如下请题主参考
好的,实现下拉二级菜单的方法一般有两种:

  1. 使用Bootstrap框架提供的下拉菜单组件
    Bootstrap是一个流行的前端框架,提供了各种组件和样式,其中就包括下拉菜单组件。使用Bootstrap的下拉菜单组件可以实现简单方便的下拉二级菜单功能。具体实现方式如下:
  • 引入Bootstrap的CSS和JS文件
  • 在HTML中添加ul标签,设置class为navbar-nav,同时添加li标签和下拉菜单的触发按钮,并在li标签下添加ul标签和二级菜单项
  • 在JS中添加对下拉菜单组件的初始化代码
  • 根据需要设置样式和动画效果

下面是示例代码:

<!-- 引入Bootstrap的CSS和JS文件 -->
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

<!-- 顶部菜单 -->
<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Brand</a>
    </div>
    <div id="navbar" class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li class="dropdown-header">Nav header</li>
            <li><a href="#">Separated link</a></li>
            <li><a href="#">One more separated link</a></li>
          </ul>
        </li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</nav>
  1. 使用jQuery实现自定义下拉菜单效果
    如果不想使用Bootstrap框架,也可以使用jQuery库来实现自定义下拉菜单效果。具体实现方式如下:
  • 在HTML中添加ul标签和下拉菜单的触发按钮,并在li标签下添加ul标签和二级菜单项
  • 使用jQuery选择器获取触发按钮和下拉菜单,并为触发按钮绑定鼠标事件
  • 编写对应的事件处理函数,用于切换下拉菜单的显示状态
  • 根据需要设置样式和动画效果

下面是示例代码:

<!-- 顶部菜单 -->
<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Brand</a>
    </div>
    <div id="navbar" class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">One more separated link</a></li>
          </ul>
        </li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</nav>

<script>
$(function() {
  // 获取下拉菜单和触发按钮
  var dropdown = $('.dropdown');
  var menu = $('.dropdown-menu');
  var trigger = $('.dropdown-toggle');

  // 鼠标进入触发按钮时显示下拉菜单,鼠标离开时隐藏下拉菜单
  dropdown.on('mouseenter', function() {
    menu.show();
  }).on('mouseleave', function() {
    menu.hide();
  });

  // 点击触发按钮时切换下拉菜单的显示状态
  trigger.on('click', function(e) {
    e.preventDefault();
    menu.toggle();
  });
});
</script>

以上两种方法均可实现下拉二级菜单的效果,具体选择哪种方法取决于你的实际需求和项目情况。

网上找的关于Flask实现鼠标悬停显示二级菜单的效果,可以看看是否满足你的要求:

<!DOCTYPE html>  
<html>  
<head>  
  <title>Flask Menu</title>  
  <style>  
    .submenu {  
      display: none;  
      position: absolute;  
      top: 100%;  
      left: 0;  
      width: 100%;  
      background-color: #f9f9f9;  
      border: 1px solid #ccc;  
      padding: 10px;  
    }  
    .submenu.show {  
      display: block;  
    }  
  </style>  
  <script>  
    $(document).ready(function() {  
      $('.menu-item').hover(function() {  
        var submenu = $(this).find('.submenu');  
        $('.submenu').not(submenu).hide();  
        submenu.toggleClass('show');  
      });  
    });  
  </script>  
</head>  
<body>  
  <ul class="menu">  
    <li class="menu-item">  
      <a href="#">Menu 1</a>  
      <ul class="submenu">  
        <li><a href="#">Submenu 1</a></li>  
        <li><a href="#">Submenu 2</a></li>  
      </ul>  
    </li>  
    <li class="menu-item">  
      <a href="#">Menu 2</a>  
      <ul class="submenu">  
        <li><a href="#">Submenu 3</a></li>  
        <li><a href="#">Submenu 4</a></li>  
      </ul>  
    </li>  
  </ul>  
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>  
</body>  
</html>

可以通过引入前端库,比如Bootstrap

引用gpt作答:你可以使用Python的Flask框架来实现下拉二级菜单。首先,你需要在HTML中创建一个下拉菜单元素,然后使用JavaScript来实现二级菜单的显示和隐藏。在Flask中,你可以使用Jinja2模板引擎来渲染HTML页面,并在后端处理菜单的逻辑。以下是一个简单的示例代码:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

templates文件夹下创建一个名为index.html的模板文件,其中包含下拉菜单的HTML代码和JavaScript代码:

<!DOCTYPE html>
<html>
<head>
    <title>下拉二级菜单</title>
    <script>
        function toggleSubMenu() {
            var subMenu = document.getElementById('sub-menu');
            subMenu.style.display = subMenu.style.display === 'none' ? 'block' : 'none';
        }
    </script>
</head>
<body>
    <h1>下拉二级菜单示例</h1>
    <div class="dropdown">
        <button onclick="toggleSubMenu()">菜单</button>
        <ul id="sub-menu" style="display: none;">
            <li>选项1</li>
            <li>选项2</li>
            <li>选项3</li>
        </ul>
    </div>
</body>
</html>

这只是一个简单的示例,你可以根据自己的需求进行扩展和修改。希望对你有帮助!

Flask 利用AJAX异步实现二级(甚至多级)下拉表单级联 --记录那些坑_红鲤鱼与彩虹的博客-CSDN博客 首先我是用的WTForms生成的表单,我也用input标签写过,感觉不整洁,就弃用了,这里我以学院school、系department、团队team,这三级关系做介绍。(和省,市,区一样)下面的Form类的定义(数据库定义就不给出了,这里使用SQLalchemy查询语言):class RegisterForm(FlaskForm):#注意这样定义school就是表单id,下面也一样 ... https://blog.csdn.net/qq_38787214/article/details/86319271?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169340735916800186574958%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169340735916800186574958&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-86319271-null-null.142^v93^insert_down1&utm_term=pythonFlask%E6%83%B3%E5%81%9A%E4%B8%8B%E6%8B%89%E4%BA%8C%E7%BA%A7%E8%8F%9C%E5%8D%95&spm=1018.2226.3001.4187

用现成的UI库做