Sunday 15 August 2010

python - Django custom user creation form -



python - Django custom user creation form -

i'm trying create new user in django app nil happens. i'm using custom user auth model. part of code edited docs. why error message "users must have email address" reported model , not forms? why not able create user? don't error back.

my model:

from django.db import models django.contrib.auth.models import baseusermanager, abstractbaseuser django.utils import timezone class myusermanager(baseusermanager): def create_user(self, email, name, neighborhood, password=none): if not email: raise valueerror('users must have email address') user = self.model( email=self.normalize_email(email), name=name, neighborhood=neighborhood ) user.set_password(password) user.save(using=self._db) homecoming user def create_superuser(self, email, name, neighborhood, password): user = self.create_user( email=email, name=name, password=password, neighborhood=neighborhood ) user.is_admin = true user.save(using=self._db) homecoming user class myuser(abstractbaseuser): name = models.charfield(max_length=255) email = models.emailfield(max_length=255, unique=true) created_at = models.datetimefield(default=timezone.now, blank=true) neighborhood = models.charfield(max_length=255) consultant_id = models.integerfield(null=true) moip_id = models.integerfield(null=true) is_active = models.booleanfield(default=true) is_admin = models.booleanfield(default=false) objects = myusermanager() username_field = 'email' required_fields = ['name', 'neighborhood'] def __str__(self): homecoming self.name def get_full_name(self): homecoming self.name def get_short_name(self): homecoming self.name def has_perm(self, perm, obj=none): homecoming true def has_module_perms(self, app_label): homecoming true @property def is_staff(self): "is user fellow member of staff?" # simplest possible answer: admins staff homecoming self.is_admin

my form:

from django import forms django.contrib.auth.forms import readonlypasswordhashfield dashboard.models import myuser class usercreationform(forms.modelform): password = forms.charfield(label='senha', widget=forms.passwordinput) confirm_password = forms.charfield(label='confirmar senha', widget=forms.passwordinput) class meta: model = myuser # note - include *required* myuser fields here, # don't need include password , confirm_password # included since defined above. fields = ('email', 'name', 'neighborhood',) def clean(self): cleaned_data = super(usercreationform, self).clean() password = cleaned_data.get('password') confirm_password = cleaned_data.get('confirm_password') if password , confirm_password , password != confirm_password: raise forms.validationerror('as senhas nao batem.') def save(self, commit=true): user = super(usercreationform, self).save(commit=false) user.set_password(self.cleaned_data['password']) if commit: user.save() homecoming user

and view:

from django.shortcuts import render frontend.forms import usercreationform # create views here. def register(request): message = none if request.method == 'post': form = usercreationform(request.post) if form.is_valid(): form.save() homecoming render(request, 'frontend/register.html', {'message': message})

so far know, not raise error forms, -

1) add together error in it, automatically gets invalided django , posted error ,

2) since overriding clean method must homecoming cleaned data. alter clean method these details -

def clean(self): cleaned_data = self.cleaned_data password = cleaned_data.get('password') confirm_password = cleaned_data.get('confirm_password') if password , confirm_password , password != confirm_password: #raise forms.validationerror('as senhas nao batem.') => not raise error in form clean, instead add together in validation error. self.add_error('confirm_password', 'as senhas nao batem.') homecoming super(usercreationform, self).clean() # =>this line of import not break calling hierarchy

a little shorter -

def clean(self): if self.cleaned_data['password'] != self.cleaned_data['confirm_password']: self.add_error('confirm_password', 'password & confirm password must match.') homecoming super().clean()

sine not returning anything, cleaned_data of form empty , django returning form page no info in it.

python django user

No comments:

Post a Comment