2017-02-06 1 views
0

Ich habe mehrere Formulare auf der gleichen Seite. Jede Form als Submit-Button, der so aussehen:Post Formular mit Return-Taste nicht die Senden Schaltfläche Name

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

Wenn ich auf die Schaltfläche Speichern klicken, alles OK funktioniert, kann ich in der Ansicht unterscheiden, die als Form wie das geschrieben worden:

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

Aber wenn ich die Eingabe/Return-Taste einmal gedrückt habe, nachdem ich ein Textfeld ausgefüllt habe, wird das Formular veröffentlicht, aber ich habe keinen Button-Namen in der request.POST Dictionnary. Die einzigen Schaltflächen, die ich auf der Seite habe, sind die Schaltfläche zum Senden, und alle haben type="submit" name="button_name" darin.

Antwort

1

Der Name der Schaltfläche ist nur in den Formulardaten enthalten, wenn die Schaltfläche zum Senden des Formulars verwendet wurde. Wenn Sie das Formular mit return senden, wird der Name der Schaltfläche nicht berücksichtigt.

Wenn Sie zwischen verschiedenen Formen unterscheiden möchten, können Sie jedem Formular eine versteckte Eingabe hinzufügen.

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

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

Dann können Sie in Ihrer Ansicht nach dem versteckten Eingang suchen.

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

Ja, das ist, was ich im Sinn hatte. Ich hüpfte, dass es eine sexy Art gab, die ich nicht kannte, um den Submit-Button-Namen mit der Return-Taste zu posten. Ich werde das dann tun, danke. – Laurent

0

Warum Sie nicht so etwas wie dieses versuchen ...

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