我正在创建一个页面,其中包含由 jinja for 循环创建的列表。 我希望用户在该列表中选择一个项目。 我希望该选择将用户发送到该项目页面,并将所选项目发送回我的 python 代码以进行进一步处理。
在我的“home.html”页面中,我有以下内容:
{% for item in list %}
{{ item }}
<form method='POST'>
<input type='submit' value='select'>
</form>
{% endfor %}
然后在我的 python View 中:
@app.route('/', methods=['GET','POST'])
def home():
list = ['a','b','c']
#???????????????????????????????????????????????
selected = request.form.item
return render_template('home.html', list=list)
最佳答案
您需要在 home()
路由中分别处理 GET
和 POST
方法。像这样的事情:
@app.route('/', methods=['GET','POST'])
def home():
if request.method == 'POST':
selected = request.form.item
# on this line you can process the selected item, but you haven't
# stated how you'll do that, so I don't know what to display here
return redirect(url_for('item_page.html', item=selected))
else:
list = ['a','b','c']
return render_template('home.html', list=list)
显然,我还假设您有一个模板 item_page.html,用于显示用户选择的单个项目。如果没有,请替换您将在那里使用的任何模板。您还需要一个 @app.route
来处理该模板。
关于python - Flask发送html数据回 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42490591/