如何在Python中使用BaseHTTPRequestHandler区分同表单内多个POST按钮
问题与解决:Python中判断表单提交按钮的触发状态
表单代码
<form method="post"> <div id="some-div"> <input id="some-input" type="text" name="input" placeholder="some input"> <button id="update-button" type="submit" name="submit_update_entry">Save changes</button> <button id="delete-button" type="submit" name="submit_delete_entry">Delete entry</button> </div> </form>
PHP中的处理方式
在PHP里,可通过以下代码判断触发的是哪个提交按钮:
isset($_POST['submit_update_entry'])
或者
isset($_POST['submit_delete_entry'])
遇到的问题
在Python中使用BaseHTTPRequestHandler类处理该表单时,网上仅能找到Flask或Django框架的相关解决方案,查询BaseHTTPRequestHandler类文档也未找到有效处理方法。
解决方案
按钮名称实际存在于通过self.rfile.read(length)读取到的field_data中,但使用默认参数调用parse.parse_qs解析时会丢失该名称:
fields = parse.parse_qs(str(field_data,"UTF-8"))
必须添加keep_blank_values=True参数,才能正确获取到submit_update_entry或submit_delete_entry字段:
fields = parse.parse_qs(str(field_data,"UTF-8"), keep_blank_values=True)
内容的提问来源于stack exchange,提问作者ijustwantedtosayhi
相关产品推荐
相关产品推荐

