 <p>I am not %100 sure why <code>self.cleaned_data.get('repassword')</code> returns <code>None</code> in that method, however <code>clean_password</code> is not the right place for performing validations of fields that depend on each other.</p> <p>According to <a href="https://docs.djangoproject.com/en/1.10/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other" rel="nofollow">docs</a>, you should perform that kind of validation in <a href="https://docs.djangoproject.com/en/1.10/ref/forms/api/#django.forms.Form.clean" rel="nofollow"><code>clean()</code></a> function:</p> <p><strong>views.py</strong></p> <pre><code>def register(self,request): form = RegisterForm() # Notice `()` at the end return render(request, 'authorization/register.html', {'form': form}) </code></pre> <p><strong>forms.py</strong></p> <pre><code>... def clean(self): cleaned_data = super(RegisterForm, self).clean() password1 = cleaned_data.get('password') password2 = cleaned_data.get('repassword') if password1 and password1 != password2: raise forms.ValidationError("Passwords don't match") </code></pre> <p>Please note that you don't have to implement <code>clean_password</code> and <code>clean_repassword</code>. </p> <p><em>(If you think you still have to implement <code>clean_password</code>, you have to return <code>password1</code> from it, not <code>self.cleaned_data</code>.)</em></p> <p>You also need to render form errors correctly as described in the <a href="https://docs.djangoproject.com/en/1.10/topics/forms/#rendering-form-error-messages" rel="nofollow">docs</a>.</p> <p>Don't forget to add it in your template:</p> <pre><code>{{ form.non_field_errors }} </code></pre> <p>As for the second error, the problem is, every time the validation fails you are returning a new fresh <code>RegisterForm</code> instance instead of the invalidated one.</p> <p>You should change the line in <code>create()</code> function:</p> <pre><code>return render(request, 'authorization/register.html', {'form': RegisterForm}) </code></pre> <p>to this:</p> <pre><code>return render(request, 'authorization/register.html', {'form': form}) </code></pre>