Как заставить мои сообщения отображаться на Django для регистрационной формы?
Я создаю форму регистрации, используя фреймворк Django, и хочу выводить пользователю сообщения об ошибках, если он введет неправильный пароль для подтверждения, или e-mail уже занят и т.д. Я написал код, и он вроде бы работает, но я не могу заставить сообщения отображаться на экране при перенаправлении на страницу регистрации, если в форме произошла ошибка. Я импортировал сообщения на странице views.py (из django.contrib import messages), и я думаю, что мой setting.py настроен правильно: setting.py
Вот мой код views.py:
def register(request):
if request.method == "GET":
register_form = RegisterForm()
return render(request, "main/register.html", {
'form': register_form
})
else:
register_form = RegisterForm(request.POST)
if register_form.is_valid():
first_name = request.POST['first_name']
last_name = request.POST['last_name']
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
confirm_password = request.POST['confirm_password']
if password == confirm_password:
if User.objects.filter(email=email).exists():
messages.info(request, 'Email or user name Already taking')
return redirect('register')
elif User.objects.filter(username=username).exists():
messages.info(request, 'username is taken')
return redirect('register')
else:
User.objects.get_or_create(username=username,
first_name=first_name, last_name=last_name, email=email,
password=password)
return redirect('main/login.html')
else:
messages.error(request, 'Password Not Match')
return redirect('register')
#return redirect ('/')
else:
return render(request, 'main/login.html')
и вот моя форма register.html:
<form action="{% url 'register' %}" method="POST">
{% csrf_token %}
<fieldset>
<legend>Enter details</legend>
<ul>
{{ form.as_table }}
<button type="submit" class="mybutton _f-purple" value="submit">Register</button>
</ul>
</fieldset>
</form>
Заранее спасибо всем, кто может помочь
hello я думаю это то, что вам нужно
{% if messages %}
<div class="mgs-area">
<div class="mgs-item">
{% for message in messages %}
<span {% if message.tags %} class="nav_item message-{{ message.tags }} " {% endif %}> {{ message }} </span>
{% endfor %}
</div>
</div>
{% endif %}
Вы можете по-разному стилизовать сообщения об успехе или ошибке
class="nav_item message-{{ message.tags }}