【发布时间】:2011-01-10 17:09:22
【问题描述】:
我有一个带有两个不同提交按钮的 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>
在视图中:
...
if 'sendPaperButton' in request.POST:
return applicants_confirmSend(request, paperID)
else:
return applicants_home(request)
sendPaperButton 从来没有在 request.POST 中,另一个也没有,我应该寻找其他地方吗?
我唯一的想法是添加一个隐藏字段并在发送表单之前通过 javascript 对其进行修改,但这似乎有点多余,因为我很确定数据应该在某个地方......
谢谢!
【问题讨论】:
-
您是否尝试过查看浏览器通过 Charles 或 Fiddler 等 http 调试器发送的内容?
-
不,我没有,但你让我对浏览器发送的内容感到好奇,所以我尝试了不同的浏览器(使用的是 Firefox 3.5,尝试了 Chrome 4 和 IE6),结果发现 Chrome 和 IE6 可以发送按钮 id 和值,Firefox 不会...猜测带有 Javascript 附加值的隐藏输入是我唯一的选择?
-
为什么不使用复选框或其他适当的表单元素?
-
您可以尝试使用按钮元素。但如果我没记错的话,IE6 可能会有一些问题。
-
我用最新的 Firefox (3.5.7) 测试过,效果很好。
标签: django forms post request submit