Created
August 4, 2013 12:35
-
-
Save genba/6150207 to your computer and use it in GitHub Desktop.
LoginForm and SignupForm for Django apps
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#-*- coding: utf-8 -*- | |
from django import forms | |
from models import User | |
class PasswordField(forms.CharField): | |
def __init__(self): | |
super(PasswordField, self).__init__(widget=forms.PasswordInput) | |
class LoginForm(forms.Form): | |
username = forms.CharField() | |
password = PasswordField() | |
def clean_username(self): | |
username = self.cleaned_data['username'] | |
try: | |
User.objects.get(username=username) | |
except User.DoesNotExist: | |
raise forms.ValidationError('User name is not registered') | |
return username | |
def clean_password(self): | |
password = self.cleaned_data['password'] | |
user = User.objects.get(username=self.cleaned_data['username']) | |
if not user.check_password(password): | |
raise forms.ValidationError('Passwords do not match') | |
return password | |
class SignupForm(forms.Form): | |
username = forms.CharField() | |
first_name = forms.CharField() | |
last_name = forms.CharField(required=False) | |
email = forms.EmailField() | |
password = PasswordField() | |
confirm_password = PasswordField() | |
def clean_username(self): | |
username = self.cleaned_data['username'] | |
try: | |
User.objects.get(username=username) | |
except User.DoesNotExist: | |
pass | |
else: | |
raise forms.ValidationError('User name already registered') | |
return username | |
def clean_email(self): | |
email = self.cleaned_data['email'] | |
try: | |
User.objects.get(email=email) | |
except User.DoesNotExist: | |
pass | |
else: | |
raise forms.ValidationError('User already registered with this e-mail address') | |
return email | |
def clean_confirm_password(self): | |
password = self.cleaned_data['password'] | |
confirm_password = self.cleaned_data['confirm_password'] | |
if password != confirm_password: | |
raise forms.ValidationError('Passwords do not match') | |
return confirm_password |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment