我想将选定的{{ exam[0] }}
传递给show_exam_form
函数。
但是我做不到。
环境
Python 3.6.1
Flask==0.12.2
Jinja2==2.9.6
app.py
@app.route('/exam/<int:exam_id>', methods=['POST'])
def show_exam_form(exam_id):
print(exam_id)
html
<form action="{{ url_for('show_exam_form', exam_id=exam_id) }}" method='POST'>
<select name=exam_id>
{% for exam in exams %}
<option value="{{exam[0]}}">{{exam[1]}}</option>
{% endfor %}
</select>
我该如何解决? 如果您需要更多信息来解决,请告诉我 谢谢!!!
答案 0 :(得分:1)
不需要将id作为参数。以下是如何为将来的OP处理此选定值的示例。
在app.py
:
@app.route('/exam', methods=['GET','POST'])
def show_exam_form():
exams = {
"IT-101":"IT Fundamentals",
"IT-201": "Object Oriented Programming",
"IT-301": "Database Management",
"IT-401": "Operating Systems"
}
if request.method == "GET":
return render_template('so.html', exams = exams)
else:
exam_id = request.form["exam_id"]
flash(exam_id)
return render_template('so.html', exams = exams)
在so.html
模板中(在我的情况下,它扩展了一个基础模板):
{% extends "layout.html" %}
{% block content %}
<form action="{{ url_for('show_exam_form') }}" class="form" method='POST'>
<div class="form-group">
<select name="exam_id" class="form-control">
{% for key,value in exams.items() %}
<option value="{{ key }}">{{ value }}</option>
{% endfor %}
</select>
</div>
<input type="submit" class="btn btn-primary" value="Submit">
</form>
{% endblock %}
输出:
答案 1 :(得分:0)
我不需要将jinja的exam_id发送给Flask
只需通过POST发送并通过show_exam_form
函数中的request.form ['exam_id']获取。