djangoのhtmlのフォーム(formタグ)内に設置した任意のボタンがクリックされた時にviews側で処理が発動できるコードを紹介します。
これができれば、例えばフォーム内に複数のボタンを設置した時に、どのボタンがクリックされたかによって処理を棲み分けすることができます。
コンテンツ
環境
・python 3.8
・django 2.2
htmlコード
先ずは下準備としてhtml側の処理を書いていきます。
sample.html
1 2 3 4 5 6 7 8 9 |
<form action="post"> {% csrf_token %} <input type="text"> - - - <button type="submit" name="start_button">開始する</button> <button type="submit" name="finish_button">終了する</button> </form> |
表示すると以下の感じになります。
ここで大切なのは、buttonタグ内のnameのプロパティです。
nameプロパティのプロパティ値であるstart_buttonですがこれが棲み分けるための印になります。
同様にfinish_buttonもnameのプロパティ値として設定をします。
views.py側の処理
views側の処理はhtmlのnameで指定された値を書いてあげれば大丈夫です。
views.py
1 2 3 4 5 6 7 |
def sample(request): if request.method == "POST": if "start_button" in request.POST: # 以下にstart_buttonがクリックされた時の処理を書いていく elif "finish_button" in request.POST: # 以下にfinish_buttonがクリックされた時の処理を書いてく |
nameプロパティに、それぞれプロパティ値を付与することで、どちらかのボタンをクリックした際に処理をそれぞれ棲み分けさせることができます。
以上。
最後に
いかがでしたでしょうか。
以上が「【django】フォームでクリックされた任意のボタンをview側で処理する方法」の紹介記事になります。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す