I'm setting up a custom-user registration form to create an account on my Django project. I feel I'm missing something very simple that keeps me from registering for some reason. My registration form demands 4 fields to be filled before a new user can register. Of these 4 fields, two are just a confirmation of the email address.
Here is a copy of my form.py:
class UserRegisterForm(forms.ModelForm):
username = forms.CharField(label='Username')
email = forms.EmailField(label='Email Address')
email2 = forms.EmailField(label='Confirm Email')
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = CustomUser
fields = ['username', 'email', 'email2', 'password']
def clean_email(self):
email = self.cleaned_data.get('email')
email2 = self.cleaned_data.get('email2')
if email != email2:
raise forms.ValidationError("Emails do not match")
And here is a copy of my view.py:
def register_view(request):
next = request.GET.get('next')
form = UserRegisterForm(request.POST or None)
if form.is_valid():
user = form.save(commit=False)
password = form.cleaned_data.get('password')
user.set_password(password)
user.save()
new_user = authenticate(username=user.username, password=password)
login(request, new_user)
if next:
return redirect(next)
return redirect('/home/')
context = {'form':form, "title":"register"}
return render(request, "register.html", context)
Here is my html file:
<h2><center><font color="white">Register Here:</font></center></h2>
<form method="POST"><center>
{% csrf_token %}
{{form}}
<input type="submit" />
</center></form>
Whenever I try to register as a new user, my form validation error is raised as is says that my two emails do not match (I copy-paste them to make sure they are identical).
I feel I'm missing something that is right under my nose...
Cheers to all of you and thank you very much.
try this
def register_view(request):
next = request.GET.get('next')
form = UserRegisterForm(request.POST or None)
if form.is_valid():
email = form.cleaned_data.get('email')
email1 = form.cleaned_data.get('email1')
if email1 == email
user = form.save(commit=False)
password = form.cleaned_data.get('password')
user.set_password(password)
user.save()
new_user = authenticate(username=user.username, password=password)
login(request, new_user)
if next:
return redirect(next)
else:
….