73

ページに 2 つのボタンを作成しようとしています。それぞれ、サーバー上で異なる Python スクリプトを実行したいと考えています。これまでのところ、使用してボタンを 1 つだけ取得/収集できました。

def contact():
  form = ContactForm()

  if request.method == 'POST':
    return 'Form posted.'

  elif request.method == 'GET':
     return render_template('contact.html', form=form)

押されたボタンに基づいて何を変更する必要がありますか?

4

7 に答える 7

145

2 つのボタンに同じ名前と異なる値を付けます。

<input type="submit" name="submit_button" value="Do Something">
<input type="submit" name="submit_button" value="Do Something Else">

次に、Flask ビュー関数で、フォームの送信に使用されたボタンを確認できます。

def contact():
    if request.method == 'POST':
        if request.form['submit_button'] == 'Do Something':
            pass # do something
        elif request.form['submit_button'] == 'Do Something Else':
            pass # do something else
        else:
            pass # unknown
    elif request.method == 'GET':
        return render_template('contact.html', form=form)
于 2013-11-05T17:16:59.780 に答える
38

これを行うための適切な方法:

@app.route('/')
def index():
    if form.validate_on_submit():
        if 'download' in request.form:
            pass # do something
        elif 'watch' in request.form:
            pass # do something else

watchとボタンdownloadをテンプレートに追加します。

<input type="submit" name="download" value="Download">
<input type="submit" name="watch" value="Watch">
于 2015-01-14T21:42:58.933 に答える
1

次のように両方のボタンに (異なる) name 属性を適用します。

<button name="one">

それらをrequest.dataでキャッチします。

于 2013-11-05T17:16:29.520 に答える
0

この仕事は私に.py

if request.method == "POST":
     if request.form.get('new Token'):
#something
     if request.form.get('custom Token'):
#something diferent

.html

<form method="post" >
<input type="submit" name="new Token" value="new Token">
<input type="submit" name="custom Token" value="custom Token">
</form>

抑圧していないボタンはPythonにNoneを返すので動作します。いい日

于 2021-05-07T02:01:03.213 に答える