You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:02:01