使用Flask检索提交按钮的名称

时间:2014-04-18 09:51:14

标签: python html flask

我有一个前端页面,其中有一组提交按钮,代码段为:

<div class="table-outer">
<div class="table-inner">
<table>
<form action="addtocart" method="post" >    
<tr><td>IIT Jee Prep Combo pack</td><td><input type="submit" name="IIT Jee Prep Combo pack " value="Add to Cart"></td></tr>
</form>
<form action="addtocart" method="post">    
<tr><td>GRE Prep Combo Pack</td><td><input type="submit" name="GRE Prep Combo Pack" value="Add to Cart"></td></tr>
</form>
<form action="addtocart" method="post">    
<tr><td>GATE Prep Combo Pack </td><td><input type="submit" name="GATE Prep Combo Pack" value="Add to Cart" ></td></tr>
</form>
<form action="addtocart" method="post">    
<tr><td>CAT Prep Combo Pack</td><td><input type="submit" name"CAT Prep Combo Pack" value="Add to Cart"></td></tr>
</form>
<form action="addtocart" method="post">
<tr><td>Civil Services Prep Combo Pack</td><td><input type="submit" name="Civil Services Prep Combo Pack" value="Add to Cart"></td></tr>
</form>    
</table>
</div>
</div>

我有一个处理所有请求的Flask服务器。现在,我想存储的名称  用户点击时在文件中预订。书的名称存储在表单标记的name属性中。我该怎么做呢如果它是一个文本框,我用request.form ['name']做了。如果提交按钮

,如何执行相同的操作

2 个答案:

答案 0 :(得分:3)

浏览器仅将用于提交的提交按钮发送到服务器;您可以在request.form对象中测试该名称:

if "Civil Services Prep Combo Pack" in request.form:
    # ...

或者您可以查找表单键;表单中应该只有一个键,它将是所用提交按钮的name属性:

book = form.keys()[0]

换句话说,提交按钮的name属性是提交字段的键;对于您的表单,关联值始终为'Add to Cart'

如果您为每个表单添加隐藏字段,那么 将更容易测试使用的表单:

<form action="addtocart" method="post">
<input type="hidden" name="book" value="Civil Services Prep Combo Pack" />
<tr><td>Civil Services Prep Combo Pack</td><td><input type="submit" name="add" value="Add to Cart"></td></tr>
</form>    

并使用request.form['book']确定使用的是哪种表单。

答案 1 :(得分:0)

我建议将图书的名称作为隐藏标记,而不是重载提交按钮。这样它就会被发送到服务器,所以你可以这样做:

<input type="hidden" name="book_name" value="Name of Book here" /> 

然后访问request.form ['book_name']。

另一种方法是通过Javascript并覆盖提交方法以了解单击了什么提交按钮。

顺便提一下,查看Flask-WTFWTForms。您可以通过编程方式创建表单,我认为它比手工编写表单要简洁得多。