Flask 如何在jinja select中发送2个参数?
我无法通过skill\u summary.html中的select表单路由2个参数(skill\u id,score)。 在skill_summary.html中,在url_中,score设置为2常量值,但如何动态传递选中的score以更新_skill routes.pyFlask 如何在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
@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'))