繁体   English   中英

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

[英]Retrieving the name of the Submit Button with 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']做了。 如果提交按钮,如何执行相同操作

浏览器仅将用于的提交按钮发送到服务器; 您可以在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']来确定使用的是什么形式。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM