Greetings!
I made a working registration system and now I want to track errors in the forms. But when im refresh a registration page i see a password_mismatch error every time.
register.html
{{trace_errors}}
<form method="POST" class="enter-profile__form">
{% csrf_token %}
<div class="enter-profile__name">
<input required name="first_name" id="first_name" class="enter-profile__input" type="text" placeholder="*First name">
<input required name="last_name" id="last_name" class="enter-profile__input" type="text" placeholder="*Last name">
</div>
<input required name="username" id="username" autocomplete="name" class="enter-profile__input" type="text" placeholder="*Login">
<input required name="email" id="email" autocomplete="email" class="enter-profile__input" type="email" placeholder="*E-mail">
<input required name="password1" id="password1" class="enter-profile__input" type="password" placeholder="*Pass">
<input required name="password2" id="password2" class="enter-profile__input" type="password" placeholder="*Confirm pass">
<button type="submit" class="enter-profile__btn">Register</button>
views.py
def registration(request):
page_title = "Registration"
trace_errors = []
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save()
user.save()
return redirect("../login")
else:
print(form.errors.as_json()) # form.is_valid() is ALWAYS false when i try to refresh the page, meanwhile if i use a correct data it will be True.
trace_errors = form.errors.as_json()
else:
form = RegisterForm()
return render(request, 'pages/auth/registration.html', {"form":form, "page_title": page_title, "trace_errors": trace_errors})
class RegisterForm(UserCreationForm):
username = forms.CharField(max_length=12, widget=forms.TextInput(attrs={'class': 'enter-profile__input'}), required=True)
first_name = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': 'enter-profile__input'}))
last_name = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': 'enter-profile__input'}))
email = forms.EmailField(widget=forms.TextInput(attrs={'class': 'enter-profile__input'}))
password1 = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'enter-profile__input'}))
password2 = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'enter-profile__input'}))
class Meta:
model = User
fields = ["username", "first_name", "last_name", "email", "password1", "password2"]
Thanks to KenWhitesell
Result register.html
{% if form.errors %}
{{ form.email.errors }}
{{ form.username.errors }}
{{ form.password1.errors }}
{{ form.password2.errors }}
{% endif %}
<form method="POST" class="enter-profile__form">
{% csrf_token %}
<div class="enter-profile__name">
{{ form.first_name }}
{{ form.last_name }}
</div>
{{ form.username }}
{{ form.email }}
{{ form.password1 }}
{{ form.password2 }}
<button type="submit" class="enter-profile__btn">Register</button>
</form>