티스토리 뷰

Django

[Django Basic 04] Messages Framework

Liiot 2020. 1. 16. 11:55

로그인 페이지나 게시글 작성 페이지 등을 구현할 때, 사용자가 자신의 활동이 실패했는지, 성공했는지, 실패했다면

 

왜 실패했는지 등을 알 수 있도록 메시지나 알람을 띄워줘야 합니다. Frontend 단에서 javascript로 alert 창을 이용하여

 

구현할 수도 있지만 Django에서는 이를 좀 더 쉽게 구현할 수 있는 프레임워크를 제공합니다.

 

바로 Messages Framework입니다.

 


1. Messages Framework

: 쿠키 및 세션 기반의 1회성 메시지를 담는 용도

  • 메시지를 하나의 HttpRequest 인스턴스에 임시로 저장하고 바로 다음 request에 표시됨
  • 1회 노출되고 해당 페이지를 reload하면 사라짐

 

Message class 속성

  • message: 실제 메시지
  • level: 메시지 레벨을 나타내는 정수
  • tags: 메시지 레벨을 나타내는 문자열 조합

Django는 기본적으로 settings.py에 messages framework를 사용할 수 있도록 설정하고 있습니다.

또한 settings.py 의 TEMPLATES 에서 messages 를 이미 렌더링 하고 있기 때문에 뷰에서 message를 템플릿으로

 

따로 넘기지 않아도 바로 사용할 수 있습니다.

 

2. Messages Levels

메시지에는 레벨이 존재합니다. 메시지 레벨을 사용하면 메시지를 유형별로 그룹화하여 뷰나 템플릿에서 다르게

 

필터링하거나 표시 할 수 있습니다. Django messages의 레벨은 다음과 같습니다.

  • DEBUG: 개발 관련 메시지(default로 메시지를 남겨도 무시됨)
  • INFO: 사용자를위한 정보 메시지
  • SUCCESS
  • WARNING
  • ERROR

 

3. Messages Tags

메시지 태그는 메시지 레벨을 나타내는 추가적인 문자열 데이터입니다. 일반적으로 템플릿에서 메시지 유형에 따라

 

메시지 스타일을 정의하기 위한 CSS 클래스로 사용됩니다. default로 각 레벨의 소문자 버전의 문자열로 태그가 설정되

 

어있습니다. 메시지 태그를 변경하는 방법은 이곳을 참조해주세요.

  • DEBUG: debug
  • INFO: info
  • SUCCESS: success
  • WARNING: warning
  • ERROR: error

 

4. Messages 추가하기

from django.contrib import messages
#원래 방법
messages.add_message(request, messages.INFO, 'Hello world.')

#축약된 방법
messages.info(request, 'Three credits remain in your account.')

 

5. Messages 띄우기

{% if messages %}
    <div>
        {% for message in messages %}
            {{ message.tags }}! {{ message.message }}
        {% endfor %}
    </div>
{% endif %}

 


 

참고 자료

 

The messages framework | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

[Django]message framework 알아보기

로그인을 실패했을 때 사용자가 확인 할 수 있도록 알람을 띄워줘야 합니다. javascript alert 을 통해서 알람을 쉽게 띄울 수 있지만 로그인에 성공했을 때, 혹은 실패했을 때 다른 알람을 띄워줘야 합니다. 구현..

ssungkang.tistory.com

 

21. Messages Framework

Messages Framework 1회성 메세지를 담는 용도 HttpRequest 인스턴스를 통해 메세지를 남길 수 있음. # 세션에 저장됨 세션=>DB 세션을 저장하기위해 httprequest가 필요함 메세지는 1회 노출이 되고, 사라집니다...

jjinisystem.tistory.com

 

댓글