2014年5月11日日曜日

Djangoメッセージフレームワーク

■概要

最近Djangoでシステム構築するとどうなるかと思いいろいろ試行錯誤中。
FlaskのFlushと同様のことDjangoで・・

■環境

Django[1.6.4]

■注意点

公式ドキュメントに記載されているsettings.pyの設定はstartappでほぼ入っていました。

■python/django/views.py

from django.contrib import messages
from django.shortcuts import render_to_response, RequestContext
# ...
def some_view(request):
    messages.set_level(request, messages.DEBUG)
    # ...
    messages.debug(request, '%s SQL statements were executed.' % count)
    messages.info(request, 'Three credits remain in your account.')
    messages.success(request, 'Profile details updated.')
    messages.warning(request, 'Your account expires in three days.')
    messages.error(request, 'Document deleted.')
    # ...
    return render_to_response('my_template.html',
      my_data_dictionary,
      context_instance=RequestContext(request))
1行目:messageのimport
2行目:RequestContextが必要
5行目:set_levelで利用可能なメッセージタグのレベルを設定。デフォルトはinfoのようです。(ここで詰まった)
7~11行目:それぞれのメッセージのテスト
15行目:requestをcontext_instanceに渡してやる必要あり。

■html


{% if messages %}
    {% for message in messages %}
  • {{ message }}
  • {% endfor %}
{% endif %}
4行目:タグの情報をそのまま、classに渡すと楽ですね。

■備考

以下の識別がしっくりきたのでメモ
DEBUG:
  開発用のメッセージ、本番環境では無視される(または削除される)
INFO:
  ユーザーに対して情報を伝えるためのメッセージ
SUCCESS:
  アクションが成功した、例) “あなたのプロフィールの更新が成功しました”
WARNING:
  失敗ではないが、その危険性がある
ERROR:
  アクションが成功していないか、何かの失敗がある

■参考

http://docs.djangoproject.jp/en/latest/ref/contrib/messages.html
http://www.18th-technote.com/post/5386511650/django

0 件のコメント :

コメントを投稿