pythonhttpserverbasehttprequesthandler

How to differentiate between multiple POST buttons within the same form using BaseHTTPRequestHandler in Python?


I have a form like so:

<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>

In PHP I can use isset($_POST['submit_update_entry']) or isset($_POST['submit_update_entry']).

I've already searched the internet and can only find solutions for Flask or Django. Also searched in class BaseHTTPRequestHandler, but with no luck.

EDIT: So I finally figured out how to do it. Apparently the button name is in field_data = self.rfile.read(length), but when I parsed field_data to get the fields using fields = parse.parse_qs(str(field_data,"UTF-8")), it was getting deleted. I had to change the line to fields = parse.parse_qs(str(field_data,"UTF-8"), keep_blank_values=True) to see submit_update_entry or submit_delete_entry.


Solution

  • So I finally figured out how to do it. Apparently the button name is in

    field_data = self.rfile.read(length)

    but when I parsed field_data to get the fields using

    fields = parse.parse_qs(str(field_data,"UTF-8"))

    it was getting deleted. I had to change the line to

    fields = parse.parse_qs(str(field_data,"UTF-8"), keep_blank_values=True)

    to see submit_update_entry or submit_delete_entry.