Flask将html数据发送回视图

时间:2017-02-27 16:17:21

标签: python post flask request jinja2

我正在创建一个页面,其中包含由jinja for循环创建的列表。 我希望用户选择该列表中的项目。 我希望该选择将用户发送到该项目页面,并将所选项目发送回我的python代码以进行进一步处理。

在我的“home.html”页面中,我有以下内容:

{% for item in list %}
    {{ item }}
    <form method='POST'>
        <input type='submit' value='select'>
    </form>
{% endfor %}

然后在我的python视图中:

@app.route('/', methods=['GET','POST'])
def home():
    list = ['a','b','c']

    #???????????????????????????????????????????????
    selected = request.form.item

    return render_template('home.html', list=list)

1 个答案:

答案 0 :(得分:1)

您需要在GET路线中单独处理POSThome()方法。像这样:

@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来处理该模板。