読者です 読者をやめる 読者になる 読者になる

Yura YuLife

ITエンジニアの覚え書き

Djangoでフォーム内でクリックされたボタンによって異なる処理を行う

タイトルの通り、同一フォーム内でクリックしたボタンによって異なる処理を行いたい場合は以下のように書きます。

hoge.html

<form action="{% url 'hoge.views.some_view' %}" method="post">
  {% csrf_token %}
  <input type="text" name="hoge" value="">
  ...
  <input type="submit" name="button_1" value="ボタン1"> 
  <input type="submit" name="button_2" value="ボタン2"> 
</form>

views.py

def some_view(request):
    if request.method == 'POST':
        if 'button_1' in request.POST:
            # ボタン1がクリックされた場合の処理
            hoge1()
        elif 'button_2' in request.POST:
            # ボタン2がクリックされた場合の処理
            hoge2()