[Fixed]-Django request.POST does not contain the name of the button that submitted the form


Don’t forget to add the name and value parameters to your “button” or “input type=submit” fields of the form. I’ve had the same problem once and it drove me crazy.

In short, as request.POST contains a dict, you need a key and a value. The key corresponds to the name parameter of your button, and the dict’s value to the button’s value.

<button type="submit" value="preview">Preview</button>

won’t be reflected in request.POST (there’s no key for the POST dictionary!), whereas

<button type="submit" value="preview" name="preview">Preview</button> 

will have a key “preview” with value “preview”.


For some reason, in Chrome, when I had two buttons using <input/> tags, it would actually treat the button I didn’t click as an input. That way, when I tested something like 'sendPaperButton' in request.POST, it would return the opposite of what I wanted.

I changed these to <button></button> tags and it worked fine.

Leave a comment