Flask 如何在jinja select中发送2个参数?

Flask 如何在jinja select中发送2个参数?,flask,flask-sqlalchemy,Flask,Flask Sqlalchemy,我无法通过skill\u summary.html中的select表单路由2个参数(skill\u id,score)。 在skill_summary.html中,在url_中,score设置为2常量值,但如何动态传递选中的score以更新_skill routes.py @app.route("/update_skill/<int:skill_id>/<int:score>", methods=['GET', 'POST']) def update_skill(skil

我无法通过skill\u summary.html中的select表单路由2个参数(skill\u id,score)。 在skill_summary.html中,在url_中,score设置为2常量值,但如何动态传递选中的score以更新_skill

routes.py

@app.route("/update_skill/<int:skill_id>/<int:score>", methods=['GET', 'POST'])
def update_skill(skill_id, score):
    skill = Skill.query.get_or_404(skill_id)
    skill.score = score
    db.session.commit()
    flash('Score has been updated!', 'success')
    return redirect(url_for('skill_summary'))

@app.route("/skill_summary")
def skill_summary():
    skills = Skill.query.all()
    return render_template('skill_summary.html', skills=skills)


按如下方式更新您的路线URL:
/Update\u skill/
。我希望这有帮助。

我在测试烧瓶行为时找到了解决方案

在jinja代码中,仅传递skill\u id值以更新\u skill

<form action="{{ url_for('update_skill', skill_id=skill.id) }}" method='POST'>
  <select name="score">
    {% for score in range(6) %}
    <option value={{score}} {% if score==skill.score %} selected {% endif %}> {{score}} </option>
    {% endfor %}
  </select>
  <div>
    <input type="submit" value="Submit">
  </div>
</form>

{分数在(6)%范围内的百分比}
{{score}}
{%endfor%}
在更新中,仅使用request.form获取所选值

@app.route("/update_skill/<int:skill_id>", methods=['POST'])
def update_skill(skill_id):
    skill = Skill.query.get_or_404(skill_id)
    skill.score = request.form["score"]
    db.session.commit()
    flash('Score has been updated!', 'success')
    return redirect(url_for('skill_summary'))
@app.route(“/update\u skill/”,方法=['POST']))
def更新技能(技能id):
skill=skill.query.get\u或\u 404(skill\u id)
skill.score=request.form[“score”]
db.session.commit()
flash(“分数已更新!”,“成功”)
返回重定向(url_for('skill_summary'))

谢谢你的建议,但我不知道的是skill_summary.html,特别是,
,当前score=2是常量值,但我想动态传递为所选值。你是否正在迭代
skills
列表?是的。技能是查询所有数据库@app.route(“/skill\u summary”)def skill\u summary():skills=skill.query.all()返回render\u模板('skill\u summary.html',skills=skills)``您正在获取的
'score'未定义
错误,因为您还需要传递
分数
,如下:
render\u模板('skill\u summary.html',skills=skills,score=2)
skill\u summary
方法中的
。您能展示一下您是如何迭代代码中的所有
skills
的吗?
jinja2.exceptions.UndefinedError
jinja2.exceptions.UndefinedError: 'score' is undefined
<form action="{{ url_for('update_skill', skill_id=skill.id) }}" method='POST'>
  <select name="score">
    {% for score in range(6) %}
    <option value={{score}} {% if score==skill.score %} selected {% endif %}> {{score}} </option>
    {% endfor %}
  </select>
  <div>
    <input type="submit" value="Submit">
  </div>
</form>
@app.route("/update_skill/<int:skill_id>", methods=['POST'])
def update_skill(skill_id):
    skill = Skill.query.get_or_404(skill_id)
    skill.score = request.form["score"]
    db.session.commit()
    flash('Score has been updated!', 'success')
    return redirect(url_for('skill_summary'))