Django request.POST不包含提交表单的按钮的名称

Dan*_*lás 15 forms django post submit request

我有一个带有两个不同提交按钮的django表单,在提交表单的视图中我需要知道按下了什么提交按钮并相应地采取不同的操作.

从我所看到的提交按钮的名称或ID应该在request.POST字典中的某个地方,但它不存在!

这是我的表单的一个片段:

<form id="editPaperForm" action="{{paper.editURL}}" method="POST">
   <input type="submit" name="savePaperButton" id="savePaperButton" value="Save and Send Later"/>
   <input type="submit" name="sendPaperButton" id="sendPaperButton" value="Save and send"/>

   ...

</form>
Run Code Online (Sandbox Code Playgroud)

在视图中:

...
if 'sendPaperButton' in request.POST:
   return applicants_confirmSend(request, paperID)
else:
   return applicants_home(request)
Run Code Online (Sandbox Code Playgroud)

sendPaperButton永远不在request.POST中,也不是另一个,我应该在其他地方寻找吗?

我唯一的想法就是在发送表单之前添加一个隐藏字段并通过javascript修改它,但这似乎有点多余,因为我很确定数据应该存在于某个地方......

谢谢!

Lau*_*Mat 29

不要忘记将名称和值参数添加到表单的"按钮"或"输入类型=提交"字段.我曾经遇到过同样的问题而且它让我发疯了.

简而言之,因为request.POST包含一个dict,你需要一个键和一个值.键对应于按钮的name参数,dict的值对应按钮的值.

<button type="submit" value="preview">Preview</button>
Run Code Online (Sandbox Code Playgroud)

不会反映在request.POST中(POST字典没有键!),而

<button type="submit" value="preview" name="preview">Preview</button> 
Run Code Online (Sandbox Code Playgroud)

将具有值"预览"的关键"预览".