validacion usuarios tutorial registro modelo administrar django django-models django-forms

usuarios - La mejor manera de registrar un usuario en Django



registro de usuarios django (2)

Haga dos formularios de modelo, uno para el modelo de User y otro para el modelo de UserProfile User .

class UserForm(django.forms.ModelForm): class Meta: model = User class UserProfileForm(django.forms.ModelForm): class Meta: model = UserProfile exclude = [''user'']

Dales prefijos y muéstrales juntos en el mismo elemento de formulario HTML. En la vista, verifique que ambos sean válidos antes de guardar el usuario y luego el perfil de usuario.

def register(request): if request.method == ''POST'': uf = UserForm(request.POST, prefix=''user'') upf = UserProfileForm(request.POST, prefix=''userprofile'') if uf.is_valid() * upf.is_valid(): user = uf.save() userprofile = upf.save(commit=False) userprofile.user = user userprofile.save() return django.http.HttpResponseRedirect(…something…) else: uf = UserForm(prefix=''user'') upf = UserProfileForm(prefix=''userprofile'') return django.shortcuts.render_to_response(''register.html'', dict(userform=uf, userprofileform=upf), context_instance=django.template.RequestContext(request))

En register.html :

<form method="POST" action=""> {% csrf_token %} {{userform}} {{userprofileform}} <input type="submit"> </form>

Estoy tratando de implementar el Registro de usuario para mi aplicación Django. El libro que leí menciona UserCreationForm, pero necesito algo más que el nombre, la contraseña y la dirección de correo electrónico. Podría implementar mi propio objeto de usuario y usar ModelForm, creo, pero luego pierdo algunas de las ventajas de django para la autenticación. Finalmente, he leído algo sobre UserProfiles que complementan a los usuarios, supongo, así que creo que necesito una combinación de todas estas cosas. Esto es lo que tengo hasta ahora.

Vista: esto es bastante simple. Todo lo que quiero hacer aquí es crear mi formulario y guardar al usuario

def main(request): rform1 = forms.RegisterForm1() rform2 = forms.RegisterForm2() return render_to_response("authentication/index.html", {''form1'': rform1, ''form2'':rform2}) def register(request): if request.method == ''POST'': rform1 = forms.RegisterForm1(request.POST) rform2 = forms.RegisterForm2(request.POST) if rform1.is_valid() and rform2.is_valid(): new_user = rform1.save() return HttpResponseRedirect("/register-success/") return render_to_response("authentication/index.html", {''form1'': rform1,''form2'':rform2})

Formulario: este es mi formulario para crear un usuario. O el comienzo de al menos

class RegisterForm1(forms.ModelForm): class Meta: model = User class RegisterForm2(forms.ModelForm): class Meta: model = UserProfile

Modelo: este es mi perfil de usuario con el que deseo complementar al usuario.

class UserProfile(models.Model): user = models.OneToOneField(User) phonenumber = PhoneNumberField()

¿Está claro lo que intento hacer? Estoy en el camino correcto


Solo estaba investigando esto, y descubrí que Django tiene un formulario de creación de usuario nuevo y muy simple, que puede usar si desea un registro simple: no hay opción para, por ejemplo, guardar una dirección de correo electrónico y validarla, así que no funcionará para el caso de uso del OP, pero lo publico aquí en caso de que otros se encuentren con esta pregunta como lo hice, y estoy buscando algo simple.

Si solo desea que las personas puedan elegir un nombre de usuario y una contraseña, los integradores harán todo por usted , incluida la validación y el guardado del nuevo usuario:

from django.views.generic.edit import CreateView from django.contrib.auth.forms import UserCreationForm urlpatterns = patterns('''', url(''^register/'', CreateView.as_view( template_name=''register.html'', form_class=UserCreationForm, success_url=''/'' )), url(''^accounts/'', include(''django.contrib.auth.urls'')), # rest of your URLs as normal )

Entonces, lo único que tienes que hacer tú mismo es crear register.html ...

Más información aquí: http://www.obeythetestinggoat.com/using-the-built-in-views-and-forms-for-new-user-registration-in-django.html