class CustomUserCreationForm(UserCreationForm): """ A form that creates a user, with no privileges, from the given email and password """
def __init__(self,*args,**kargs): super(CustomUserCreationForm,self).__init__(*args,**kargs) del self.fields['username']
class Meta: model = CustomUser fields = ['email',]class CustomUser(AbstractBaseUser):
first_name = models.CharField(max_length=100,blank=True) last_name = models.CharField(max_length=100,blank=True) college = models.CharField(max_length=200,blank=True) email = models.EmailField(unique=True,blank=False) date_joined = models.DateTimeField(_('date joined'), default=datetime.now()) is_active = models.BooleanField(default=True) is_superuser = models.BooleanField(default=False) is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['first_name']
objects = CustomUserManager()
class Meta: verbose_name = _('user') verbose_name_plural = _('users')
def get_absolute_url(self): return "/users/%s/" % urlquote(self.email)
def get_full_name(self): """ Returns the first name plus the last name , with a space in between """ full_name = '%s %s' % (self.first_name,self.last_name) return full_name.strip()
def get_short_name(self): """ Returns the short name for the user """ return self.first_name
def email_user(self,subject,message,from_email=None): """ Sends an email to the user """ send_mail(subject,message,from_email,[self.email])
def register_user(request): if request.method == 'POST': form = CustomUserCreationForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('/accounts/register_success') else: form = CustomUserCreationForm() args = {} args.update(csrf(request)) args['form'] = form return render(request, 'register.html', args){% extends "base.html" %}
{% block content %} <h2>Register</h2> {% for field in form %} {{field.error}}
{% endfor %} <form action="/accounts/register/" method="post"> {% csrf_token %} {{form.as_p}} <input type="submit" value="Register" /> </form> {% endblock %}class Meta:model = CustomUserfields = ['email',]
del self.fields['username']
this is wrong, use exclude in Meta class to remove fields