我在同一页面上有多个表单。每个表单都作为提交按钮,如下所示:
<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"
。
答案 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:
[...]