2017-02-06 155 views
0

我在同一頁上有多個表單。每個表單的提交按鈕,看起來像:帶回車鍵的郵政表單不會提交提交按鈕名稱

if request.method == 'POST': 
     if 'button_name' in request.POST: 
      [...] 
     elif 'button_name_2' in request.POST: 
      [...] 

<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> 

當我點擊保存按鈕,一切工作正常,我可以在其中形成的被張貼這樣的觀點區別

但是,如果我在完成文本字段後按下輸入/返回鍵,表單就會發布,但在request.POST詞典中沒有按鈕名稱。我在頁面上的唯一按鈕是提交按鈕,它們都有type="submit" name="button_name"

回答

1

如果按鈕用於提交表單,按鈕名稱僅包含在表單數據中。如果您使用return提交表單,則不會包含按鈕名稱。

如果你想區分不同的形式,那麼你可以添加一個隱藏的輸入到每個表單。

<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: 
     [...]