Django フォーム内に複数ボタンがある場合、押下されたボタンを識別する

html

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" name="btn_ok">確定</button>
    <button type="submit" name="btn_cancel">キャンセル</button>
</form>

または

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" name="btn_ok" value="確定">
    <input type="submit" name="btn_cancel" value="キャンセル">
</form>

views.py

if request.method == "POST":
    if "btn_ok" in request.POST:
        # ①
        print("確定ボタンが押下された")
    elif "btn_cancel"  in request.POST:
        # ②
        print("キャンセルボタン押下された")

確定ボタン押下で①が、キャンセルボタン押下で②のルートを通ります。

コメント