Flask课程项目子菜单href跳转返回首页302重定向问题求助
问题解决方案
1. 修正URL路径不规范问题
URL规范中不允许直接使用未编码的空格,你当前写的href="/risk models"属于错误写法,浏览器发起请求时会自动将空格编码为%20,如果你的Flask后端路由没有严格匹配/risk%20models这个路径,就会触发全局的404重定向逻辑,返回302跳转到首页。
- 修正方案:
- 后端路由统一用短横线或下划线命名,避免空格,比如定义为
@app.route("/risk-models") - 前端对应修改链接为
href="/risk-models",同步把/expected returns也改为/expected-returns,避免后续出现同类问题
- 后端路由统一用短横线或下划线命名,避免空格,比如定义为
2. 调整路由定义顺序
Flask的路由匹配遵循「先定义先匹配」规则,如果你在/risk-models路由之前定义了通配规则的路由,比如@app.route("/risk<param>")这类,会优先匹配通配路由,触发重定向逻辑。
- 修正方案:把精准匹配的
/risk-models路由移到所有通配路由之前。
3. 修复HTML ID重复问题
你代码中两个下拉菜单的触发按钮id都是navbarDropdown,HTML要求页面元素id必须唯一,重复id会导致Bootstrap的下拉事件绑定混乱,如果你自定义了多级子菜单的JS逻辑,还可能出现事件冒泡异常,导致请求参数异常触发后端重定向。
- 修正方案:把第二个「Build a Portfolio」对应的下拉按钮id改为唯一值,比如
id="navbarDropdownBuild",同时把对应的aria-labelledby属性同步修改为aria-labelledby="navbarDropdownBuild"。
4. 校验路由权限配置
确认/risk-models对应的路由有没有加@login_required这类权限校验装饰器,如果你在未登录状态下访问需要登录权限的路由,也会触发302重定向到首页/登录页。
内容的提问来源于stack exchange,提问作者Oris
相关产品推荐
相关产品推荐

