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

如何在Flask中获取点击按钮对应的course.id值

获取点击按钮对应course.id的解决方案

你的代码核心问题是表单提交的键值不匹配:HTML里按钮的name被设为动态的课程ID,但后端却在查找固定键name,导致无法正确获取目标值。以下是两种可行的修复方案:

方案1:固定按钮name,用value传递course.id(推荐)

这种方式更直观,也能避免遍历所有课程的冗余操作。

修改HTML代码:

{% for course in courses %}
    <hr class="border border-primary">
    <form action="/search" method="post">
        <!-- 固定name为course_id,value绑定课程ID -->
        <button type="submit" name="course_id" value="{{course.id}}"> Favorite </button>
    </form>
    <h2>{{ course.name }}</h2>
{% endfor %}
{% endblock %}

修改后端Python代码:

elif request.method == "POST":
    # 直接获取表单中固定键course_id的值
    course_id = request.form.get('course_id')
    if course_id:
        # 无需遍历所有课程,直接插入数据库
        db.execute("INSERT INTO favorite_courses(user_id, course_id) VALUES (?, ?);", session['user_id'], course_id)
    return redirect("/")

方案2:保留原按钮name,通过遍历表单键获取course.id

如果不想修改HTML结构,可以通过遍历表单提交的键来找到课程ID(因为按钮的name就是course.id):

修改后端Python代码:

elif request.method == "POST":
    course_id = None
    # 遍历表单所有键,找到对应的课程ID(假设course.id是数字类型)
    for key in request.form.keys():
        if key.isdigit():
            course_id = key
            break
    if course_id:
        db.execute("INSERT INTO favorite_courses(user_id, course_id) VALUES (?, ?);", session['user_id'], course_id)
    return redirect("/")

方案1逻辑更清晰,性能也更好,建议优先采用。

内容的提问来源于stack exchange,提问作者João Vitor Barros Collet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:30:06