表示されるメッセージのイメージ
※bootstrapを使用していることが前提です。
設定する箇所
- views.py
- settings.py
- html
views.py
- FormViewクラスを継承し、form_validメソッドをオーバーライド
- messages.success(self.request, 'メッセージを送信しました。')で成功時のメッセージを設定
class InquiryView(FormView):
template_name = "inquiry.html"
form_class = InquiryForm
# success_urlは指定されたurlにリダイレクト(バリエーションに問題がなければ)
# reverse_lazyでurlを逆引きできる。ハードコーディングは避ける。reverse関数の遅延評価版。
success_url = reverse_lazy('app_name:inquiry') # <urls.pyのapp_name>:<ルーティングにつけたname>
def form_valid(self, form):
"""
FormViewのメソッドをOverride
Validationに問題がなければ実行される
formオブジェクトにユーザの入力値が格納されている
"""
messages.success(self.request, 'メッセージを送信しました。')
return super().form_valid(form)
setting.py
- {{ message.tags }} にレベルに応じたメッセージが反映される
- Bootstrapに対応
MESSAGE_TAGS = {
messages.ERROR: 'alert alert-danger',
messages.WARNING: 'alert alert-warning',
messages.SUCCESS: 'alert alert-success',
messages.INFO: 'alert alert-info'
}
html
{% if messages %}
<div class="container">
<div class="row">
<div class="my-div-style w-100">
<ul class="messages" style="list-style: none;">
{% for message in messages %}
<li {% if message.tags %} class="{{ message.tags }}">
{% endif %}
{{ message }}
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endif %}