[Django] メッセージが追加されているかを判定する方法(改)

djangoのメッセージフレームワークを使っている場合の、メッセージが追加されているかどうかを判定する方法です。以前も同じ目的の記事を書きましたが、もっといいやり方があったのでメモしておきます。

追加されているメッセージの数は、

# requestは、django.http.HttpRequestのインスタンス
len(request._messages)

で取得できます。

これをふまえて、utils系のモジュールに

import logging
logger = logging.getLogger(__name__)

def has_messages(request):
    if hasattr(request, '_messages'):
        return len(request._messages) > 0
    else:
        # メッセージフレームワークが有効でない場合は必ずFalseを返します。
        # 判定に使うので、fail_silentlyなんてことはやりません。
        logger.warn(u'django.contrib.messages.middleware.MessageMiddlewareが有効になっていません。')
        return False

という関数を定義しておくと便利かもしれません。

この記事が役に立った場合、シェアしていただけると励みになります!!