2017-02-27 19 views
0

jinja forループによって作成されたリストを含むページを作成しています。 ユーザーは、そのリストの項目を選択してもらいたいです。 私はその選択がそのアイテムページにユーザーを送り、さらに処理のために選択したアイテムを私のpythonコードに送り返すことを望みます。私の 'home.html' のページでFlaskはhtmlデータを表示して返信します

私は、次のしている:私のpythonビューで次に

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

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

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

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

答えて

1

あなたがで別々にGETPOSTメソッドを処理する必要がありますあなたのhome()ルート。このような何か:

明らか
@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が必要です。

関連する問題