热门标签:
Q:

Django请求。POST不包含提交表单的按钮的名称

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

从我读过的提交按钮的名称或id应该在请求中的某个地方。发布字典,但它不在那里!

这是我的形式的片段:

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

在视图中:

...
if 'sendPaperButton' in request.POST:
   return applicants_confirmSend(request, paperID)
else:
   return applicants_home(request)

sendPaperButton从不在请求中。帖子,另一个也不是,我应该找别的地方吗?

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

谢谢!

原网址
A:

不要忘记将名称和值参数添加到表单的"按钮"或"输入类型=提交"字段中。 我曾经有过同样的问题,这让我发疯。

总之,作为请求。POST包含一个字典,你需要一个键和一个值。 键对应于按钮的名称参数,dict的值对应于按钮的值。

<button type="submit" value="preview">Preview</button>

不会反映在请求中。POST(POST字典没有key!),而

<button type="submit" value="preview" name="preview">Preview</button> 

将有一个键"预览"与值"预览"。

所有回答

共 1 条

author avatar

出于某种原因,在Chrome中,当我有两个使用<input/>标签的按钮时,它实际上会将我没有点击的按钮视为输入。 这样,当我测试像'sendPaperButton' in request.POST这样的东西时,它会返回与我想要的相反的东西。

我将这些更改为<button></button>标签,它工作正常。

相似问题