반응형
Django Messages Framework는 사용자에게 일회성 알림 메시지를 표시할 수 있는 기능이다. 이 프레임워크를 사용하면 작업 완료, 오류 발생, 경고 등 다양한 상황에서 사용자에게 피드백을 제공할 수 있다.
목차
설정하기
Messages Framework를 사용하기 위해서는 다음 설정이 필요하다:
# settings.py
INSTALLED_APPS = [
'django.contrib.messages',
# ...
]
MIDDLEWARE = [
'django.contrib.messages.middleware.MessageMiddleware',
# ...
]
메시지 레벨
Django는 5가지 종류의 메시지 레벨을 제공한다:
from django.contrib import messages
messages.success(request, '성공 메시지') # 초록색 알림
messages.error(request, '오류 메시지') # 빨간색 알림
messages.warning(request, '경고 메시지') # 노란색 알림
messages.info(request, '정보 메시지') # 파란색 알림
messages.debug(request, '디버그 메시지') # 회색 알림
View에서 사용하기
실제 뷰에서는 다음과 같이 사용할 수 있다:
from django.shortcuts import render
def my_view(request):
messages.info(request, '처리가 완료되었습니다.')
return render(request, 'my_template.html')
from django.contrib import messages
from django.shortcuts import redirect
def user_profile(request):
if request.method == 'POST':
try:
# 프로필 업데이트 로직
user.save()
messages.success(request, '프로필이 성공적으로 업데이트되었습니다.')
return redirect('profile')
except Exception as e:
messages.error(request, f'오류가 발생했습니다: {str(e)}')
return redirect('profile')
def create_post(request):
form = PostForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, '포스트가 생성되었습니다.')
else:
messages.error(request, '입력 값을 확인해주세요.')
return redirect('post-list')
redirect()의 URL을 처리하는 view함수가 반환하는 템플릿 파일 안에서, messages.sucess()나 messages.error() 등의 에러메시지가 messages로 접근 가능하다.
그 이유는 Messages framework는 한 view에서 설정한 메시지를 다음 요청의 템플릿에서도 접근할 수 있도록 설계되어 있기 때문이다. 이것이 가능한 이유는:
- Messages framework가 메시지를 세션에 저장하기 때문이다.
- 메시지는 한 번 표시되고 나면 자동으로 세션에서 삭제된다. (아래 내용 참고)
템플릿에서 표시하기
메시지를 템플릿에서 표시하는 방법이다:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<div class="alert alert-{{ message.tags }}">
{{ message }}
</div>
{% endfor %}
</ul>
{% endif %}
메시지는 한 번 표시된 후 자동으로 세션에서 삭제된다 (정확히는 템플릿에서 messages 변수를 iterate할 때 삭제된다).
따라서 동일한 요청 내에서 다시 messages를 iterate하면 메시지가 없다. 이는 같은 메시지가 여러 번 표시되는 것을 방지하기 위한 설계이다.
추가 기능
extra_tags: 추가 CSS 클래스 지정 가능.
messages.success(request, '저장되었습니다', extra_tags='custom-class')
실제 사용 팁
- 주요 CRUD 작업 후에는 피드백을 제공하는 것이 좋은데, 이때 messages는 좋은 도구가 될 수 있다.
- 오류 메시지는 구체적으로 작성하되, 보안에 민감한 정보는 제외해야 한다.
- Bootstrap이나 Tailwind CSS와 함께 사용하면 멋진 UI를 만들 수 있다.
마무리
Django Messages Framework를 활용하면 사용자 경험을 크게 향상시킬 수 있다. 적절한 피드백은 웹 애플리케이션의 사용성을 높이는 핵심 요소이기 때문이다.
반응형
'Django' 카테고리의 다른 글
[Django] CBV의 동작 원리와 주요 메서드 분석 (1) | 2025.01.26 |
---|---|
[Django] 템플릿에 Bootstrap 적용하기 (0) | 2025.01.24 |
[Django] 사용자 모델 구현 방법 비교 (0) | 2025.01.22 |
[Django] View 클래스의 as_view() 메서드 (0) | 2025.01.20 |
[Django] 정적 파일(Static Files) 관리 (0) | 2025.01.17 |