【django】successしたらメッセージを表示する方法 (SuccessMessageMixin)

Formの送信を実装したのは良いけど,何も表示されていないからできたかどうかわからないといった悩みはないでしょうか?

一般的なwebサイトではFormの送信やデータベースの作成時に完了しました!とメッセージを表示されます

本記事では,djangoでメッセージ表示を簡単に実装する方法を解説します

Class継承を使って2行ほど追加するだけなので,だれでも簡単に実装できます

本記事で用いるフォームは下記記事のものを使うので,参考にしてください

目次

views.pyでSuccessMessageMixinを継承する

今回はお問い合わせが成功した際にメッセージが出るようにします

views.pyは下記のようになっていると思います

class ContactFormView(CreateView):
    template_name = 'blog/contact.html'
    form_class = ContactForm
    success_url = reverse_lazy('home')
    model = Contact

こちらのContactFormView(CreateView)にクラスを継承します

編集する箇所は2つだけです

変更箇所
  1. Class継承にSuccessMessageMixinを追加
  2. Class変数にsuccess_messageを追加
from django.contrib.messages.views import SuccessMessageMixin

class ContactFormView(SuccessMessageMixin, CreateView): #継承追加
    template_name = 'blog/contact.html'
    form_class = ContactForm
    success_url = reverse_lazy('home')
    model = Contact
    success_message = 'お問い合わせありがとうございました。' #メッセージ追加

テンプレートにメッセージを表示する

リダイレクトする先にテンプレートを編集します

つまり送信成功した場合に,どのURLに飛んでメッセージを表示させたいかを選択します

本記事では,home.htmlになります

{% if messages %}
<div class="messages alert alert-primary" role="alert">
    {% for message in messages %}
      {{ message }}
    {% endfor %}
</div>
{% endif %}

上記のifブロックごと好きな場所に追加してください

これでサーバーを立ち上げて確認してください

message

参考文献

お疲れ様でした

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次