带有返回键的帖子表单不会发布提交按钮名称

时间:2017-02-06 13:08:11

标签: html django forms

我在同一页面上有多个表单。每个表单都作为提交按钮,如下所示:

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

当我点击保存按钮时,一切正常,我可以在视图中区分出哪种形式:

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

但是如果我在完成文本字段后按下回车键/返回键,表单就会被发布,但我在request.POST dictionnary中没有按钮名称。我在页面上的唯一按钮是提交按钮,它们都有type="submit" name="button_name"

2 个答案:

答案 0 :(得分: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:
        ...

答案 1 :(得分: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:
        [...]