diadia

興味があることをやってみる。自分のメモを残しておきます。

メッセージフレームワークを使用する

環境

メッセージフレームワークの使い方

参考:https://docs.djangoproject.com/ja/2.2/ref/contrib/messages/

メッセージを有効にする

django-admin startproject によって生成されたデフォルトの settings.py は、メッセージ機能を有効にするために必要な設定を全て含んでいます

普通はdjango-admin startprojectコマンドを実行してプロジェクトを始めるので、メッセージフレームワークに関して特段settings.pyで変更する項目はない。

メッセージ概要

使い方のイメージは、views.pyにてmessagesを挿入し、テンプレートでmessagesを読み込むことでメッセージを表示することができる。またメッセージだけでは、雰囲気が出ないのでBootstrap4のAlertsを使うとそれっぽくなる。

メッセージフレームワークの使い方

views.pyにdjango.contrib.messagesを挿入して使うので以下ののような感じになる。

from django.shortcuts import render
from django.views.generic import View
from django.contrib import messages

class TestMessageView(View):
    def get:
        messages.info(request, 'これはテストです')
        return render(request, "test_messages.html")

 

またtemplateではmessagesからmessageを取り出して使うので以下のようになる。

{% if messages %}

{% for message in messages %}
{{ message }}
{% endfor %}

{% endif %}

Bootstrap4を使ったテンプレートサンプル

Bootstrap4のAlertsを利用する。https://getbootstrap.com/docs/4.4/components/alerts/#examples

<-- base.htmlにはBootstrap4のスターターテンプレートが記載されている -->
{% extends 'config/base.html' %}

{% block content %}
<div class="container">
<div class="row">
<div class="col">
{% if messages %}

{% for message in messages %}
<div class="alert alert-info" role="alert" >
<p >{{ message }}</p >
</div >
{% endfor %}

{% endif %}

</div>
</div>
</div>

{% endblock %}