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

Python Flask如何将event对象的id作为参数传递给URL路由

问题原因

当前Jinja2模板中的链接未使用正确的变量渲染语法,event['id']不会被自动替换为实际的id值,会直接作为字符串拼接到URL中,导致后端拿到的参数不正确。

修复方案

前端模板修改

有两种实现方式,更推荐第二种:

  • 方案1:补充Jinja2变量渲染标记
    将a标签的href属性修改为:
    <a href="/participate/{{ event['id'] }}" class="btn btn-primary">Participate</a>
    
  • 方案2:使用Flask内置的url_for函数生成链接(避免硬编码路由,可维护性更高)
    <a href="{{ url_for('participate', id=event['id']) }}" class="btn btn-primary">Participate</a>
    
    其中url_for第一个参数为后端视图函数的函数名,第二个参数对应路由中定义的参数名,后续调整路由路径时不需要同步修改模板代码。

后端可选优化

可以给路由的id参数添加整数类型限定,过滤非法参数,提升安全性:

@app.route("/participate/<int:id>")
def participate(id):
    if session.get("email"):
        print(id)
        mail = setupMail()
        return redirect(url_for("home"))
    else: 
        return redirect(url_for("login"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:18:00