Я создал регистрационное представление, в котором я хочу, чтобы ValidationError
(s) отображались после отправки формы, но это недействительно form.is_valid() == False
. ChefRegisterationForm
является подклассом UserCreationForm
. Если форма верна, подойдет сообщение fla sh. С тем, что у меня есть, он выполняет свою работу, но должен быть более чистый способ, чем два render
представления в представлении. Как это можно реорганизовать так, чтобы существовал только один оператор render
?
def register_chef(request):
if request.method == 'POST':
new_user_form = ChefRegisterationForm(request.POST)
if new_user_form.is_valid():
user = new_user_form.save()
login(request, user)
messages.info(
request,
f"Logged in: {user}!"
)
return HttpResponseRedirect(reverse("menu:menu_list"))
return render(request, 'chef/register_chef.html', {'form': new_user_form})
new_user_form = ChefRegisterationForm()
return render(request, 'chef/register_chef.html', {'form': new_user_form})
{% extends 'index.html '%}
{% block content %}
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<p>{{ error }}</p>
{% endfor %}
{% endfor %}
{% endif %}
<form action="{% url 'chef:register' %}" method="post">
{% csrf_token %}
{% for field in form %}
{{ field }}
{% endfor %}
<button>Register</button>
</form>
{% for key in form.errors %}
{{ key }}
{% endfor %}
{% endblock %}