This snippets provide username availability, double email and password validation. You can use it this way :
f = SignupForm(request.POST)
f.is_valid()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | class UserField(forms.CharField):
def clean(self, value):
super(UserField, self).clean(value)
try:
User.objects.get(username=value)
raise forms.ValidationError("Someone is already using this username. Please pick an other.")
except User.DoesNotExist:
return value
class SignupForm(forms.Form):
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
username = UserField(max_length=30)
password = forms.CharField(widget=forms.PasswordInput())
password2 = forms.CharField(widget=forms.PasswordInput(), label="Repeat your password")
email = forms.EmailField()
email2 = forms.EmailField(label="Repeat your email")
def clean_email(self):
if self.data['email'] != self.data['email2']:
raise forms.ValidationError('Emails are not the same')
return self.data['email']
def clean_password(self):
if self.data['password'] != self.data['password2']:
raise forms.ValidationError('Passwords are not the same')
return self.data['password']
def clean(self,*args, **kwargs):
self.clean_email()
self.clean_password()
return super(SignupForm, self).clean(*args, **kwargs)
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 10 months, 2 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months, 3 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 5 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 6 months ago
- Help text hyperlinks by sa2812 1 year, 7 months ago
Comments
Thank you very much for the contribution, i'm using this snippet as a base form my signup form now =)
#
very elegant solution :-)
#
thank you very much !!! it worked for me for password check
#
Please login first before commenting.