Django request.POST does not contain the name of the button that submitted the form

前端 未结 2 1409
生来不讨喜
生来不讨喜 2020-12-30 04:43

I have a django form with two different submit buttons, on the view where the form is submitted to I need to know what submit button was pressed and take different actions a

相关标签:
2条回答
  • 2020-12-30 04:57

    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.

    0 讨论(0)
  • 2020-12-30 05:18

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

    0 讨论(0)
提交回复
热议问题