2017-02-06 9 views
0

私は同じページに複数のフォームがあります。そのように見えるsubmitボタンなど各形式:返信キー付き投稿フォームは送信ボタン名を投稿しません

if request.method == 'POST': 
     if 'button_name' in request.POST: 
      [...] 
     elif 'button_name_2' in request.POST: 
      [...] 
:私は、保存ボタンをクリックすると、すべてがOKに動作

<button type="submit" name="button_name" style="display:none;" class="btn btn-primary btn-striped" disabled="disabled"><span class="glyphicon glyphicon-floppy-saved"></span><span class="button-text"> {% trans "Save" %}</span></button> 

、私はそのように掲載されてとフォームビューに区別することができます

しかし、私がテキストフィールドを完成したらenter/returnキーを押すとフォームがポストされますが、request.POST dictionnaryにボタン名はありません。私がontページに持っている唯一のボタンはsubmitボタンであり、それらはすべてtype="submit" name="button_name"を持っています。

答えて

1

フォームを送信するためにボタンが使用された場合、ボタン名はフォームデータにのみ含まれます。リターンを使用してフォームを送信すると、ボタン名は含まれません。

異なるフォームを区別したい場合は、各フォームに非表示の入力を追加できます。

<form> 
    ... 
    <input name='form1' type='hidden' /> 
</form> 

<form> 
    ... 
    <input name='form2' type='hidden' /> 
</form> 

次に、非表示の入力を確認できます。

if request.method == 'POST': 
    if 'form1' in request.POST: 
     ... 
    elif 'form2' in request.POST: 
     ... 
+0

うん、それは私が念頭に置いていたものです。戻り値のキーで送信ボタンの名前を投稿することを知らないセクシーな方法があることを私は知りました。私はそれをします、ありがとう。 – Laurent

0

なぜあなたはこのような何かをしようとしません...

if request.method == 'POST': 
    #get the button name or None 
    button_name = request.POST.get("button_name",None) 
    button_name2 = request.POST.get("button_name2",None) 
    #if you found button_name do something 
    if button_name: 
     [...] 
    #else if you found button_name2 do something else 
    elif button_name2: 
     [...] 
関連する問題