Django 에서는 사용자 요청에 대한 응답의 일환으로 일회용 메시지 Message Framework를 제공한다.
https://docs.djangoproject.com/en/4.0/ref/contrib/messages/
Message tags는 DEBUG, INFO, SUCCESS, WARNING, ERROR 5종류가 있다.
Message Framework 를 사용하는 방법은 다음과 같다.
- 1) Settings.py에 message app과 Middleware를 추가해준다. (기본적으로 들어가 있기도 함)
- 2) Request (ex. HTML - Form) 을 작성한다.
- 3) views.py message관련 라이브러리를 import 하고 tags와 message를 설정한다.
- 4) Django template을 이용해 message를 출력한다.
1. settings.py
INSTALLED_APPS = [
...
'django.contrib.messages',
...
]
MIDDLEWARE = [
...
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
...
]
2. HTML Form 작성
<form class="form-area" method="post" action="{% url 'join' %}">
{% csrf_token %}
<div class="form-group mt-2 mb-2">
<input type="email" class="form-control" id="user_email" name = "user_email" aria-describedby="emailHelp" placeholder="아이디 (Email)">
</div>
</form>
3. views.py
from django.contrib import messages
def join_view(request):
if request.method == 'POST':
user_email = request.POST.get('user_email', '')
# validation 1 ) user email 빈칸 아닌지~
if user_email == '':
messages.error(request, '사용자 아이디와 패스워드는 필수 값 입니다.')
return render(request, 'join.html')
4. message.html 작성
- 일반적으로 Tag에 따라 보내는 메시지를 구분한다.
{% if messages %}
{% for message in messages %}
{% if message.tags == 'success' %}
<div class="alert alert-success" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">×</button>
<strong>{{message}}<strong>
</div>
{% elif message.tags == 'error' %}
<div class="alert alert-danger" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">×</button>
<strong>{{message}}<strong>
</div>
{% endif %}
{% endfor %}
{% endif %}
구현 화면
'Python > Django' 카테고리의 다른 글
[Django] CSRF Token + Ajax 비동기 통신 (0) | 2022.06.12 |
---|---|
[Django, DB] Migration 초기화 방법 (+window 자동화 code) (0) | 2022.06.05 |
[Django] Django .html .css 분리 방법 (by. Django Template) (0) | 2022.06.03 |
[Django] Admin으로 Table 관리하기 (0) | 2022.06.01 |
[Django] 무식한 라이브러리 분해 3 (contrib) (0) | 2022.05.31 |