You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中使用url_for生成带查询参数的正确链接问题

Flask url_for生成查询参数链接并正确获取参数

问题分析

核心矛盾在于:

  • 路由用路径参数(<driver_id>)时,url_for会把参数嵌入URL路径,生成/report/drivers/SVF格式的链接,不符合查询参数的需求;
  • 路由改为无参数的/report/drivers/时,url_for能生成正确的?driver_id=SVF查询参数链接,但函数因未正确获取参数而失效。

解决方案

只需修改Python路由函数,通过request.args获取查询参数,而非将参数定义为路由路径变量,即可同时满足链接格式要求和函数正常工作:

修改后的Python路由函数

from flask import request  # 需导入request模块

@app.route("/report/drivers/")
def driver_links():
    # 从URL查询参数中提取driver_id
    driver_id = request.args.get('driver_id')
    context = {
        "report": sort_asc_desc('data', 'asc'),
        "test": driver_id
    }
    return render_template('driver_id.html', **context)

HTML模板保持不变

<a href="{{ url_for('driver_links', driver_id=key[0]) }}">{{key[0]}}</a>

原理说明

  • url_for('driver_links', driver_id=key[0]) 会自动将driver_id作为查询参数拼接到URL末尾,生成http://127.0.0.1:5000/report/drivers/?driver_id=SVF格式的链接;
  • request.args.get('driver_id') 负责从URL的查询参数中读取driver_id的值,确保函数能正常获取并使用该参数。

内容的提问来源于stack exchange,提问作者Vladimir Kharchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:40:24