Foros del Web » Programando para Internet » Python »

Django Class-Based Generic Views Registrar Usuarios

Estas en el tema de Django Class-Based Generic Views Registrar Usuarios en el foro de Python en Foros del Web. Hola, en ocasiones anteriores había usado django-registration para manejar el tema del registro y login, ahora estoy tratando de crear mi propia aplicación pero el ...
  #1 (permalink)  
Antiguo 23/03/2013, 16:59
colextey
Invitado
 
Mensajes: n/a
Puntos:
Django Class-Based Generic Views Registrar Usuarios

Hola, en ocasiones anteriores había usado django-registration para manejar el tema del registro y login, ahora estoy tratando de crear mi propia aplicación pero el problema es que no me guarda el usuarios os dejo el código que he realizado hasta ahora:

Código Python:
Ver original
  1. #forms.py
  2. # -*- encoding: utf-8 -*-
  3. from django import forms
  4. from django.contrib.auth.models import User
  5.  
  6. class UserCreationForm(forms.ModelForm):
  7.     username = forms.RegexField(regex=r'^[\w.@+-]+$',max_length=30,label='Usuario',
  8.                                 error_messages={'Invalido': "El usuario solo debe contener letras, números y @/./+/-/_ caracteres."})
  9.     email = forms.EmailField(label="E-mail")
  10.     password1 = forms.CharField(widget=forms.PasswordInput,
  11.                                 label="Contraseña")
  12.     password2 = forms.CharField(widget=forms.PasswordInput,
  13.                                 label="Repetir Contraseña")
  14.     class Meta:
  15.         model = User
  16.         fields = ('username','email','password1','password2')
  17.  
  18.  
  19. #views.py
  20. # -*- encoding: utf-8 -*-
  21. from django.views.generic.edit import FormView
  22. from myapp.apps.registro.forms import UserCreationForm
  23. from django.contrib.auth.models import User
  24.  
  25. class CreateUser(FormView):
  26.     template_name = 'registration/registration_form.html'
  27.     success_url = '/'
  28.     form_class = UserCreationForm
  29.  
  30.     def is_valid(self,form):
  31.         user = User.objects.create_user(form.cleaned_data['username'],
  32.                                         form.cleaned_data['email'],
  33.                                         form.cleaned_data['password1'])
  34.         user.is_active = False
  35.         user.save()
  36.         return super(CreateUser, self).form_valid(form)

Por mas que he buscado veo que todo esta bien, y hay muchos ejemplos corriendo tal cual, pero a mi no me quiere guardar los registros del formulario, es decir, no me guarda el usuario, no me da ningun error, se redirecciona en donde se indica success_url todo aparenta estar bien excepto cuando me fijo en el área de administración y el usuario no existe.

Saludos.
  #2 (permalink)  
Antiguo 25/03/2013, 09:32
Avatar de erickxls  
Fecha de Ingreso: julio-2009
Ubicación: Lima
Mensajes: 78
Antigüedad: 15 años, 4 meses
Puntos: 3
Respuesta: Django Class-Based Generic Views Registrar Usuarios

si estas usando FormView no es necesario que hagas nada mas que definir el formulario a usar para que te guarde el registro, ahora la función que pones is_valid debería ser form_valid para que te regrese el formulario con la data de POST, con eso debería solucionarse el problema.
__________________
mi blog
  #3 (permalink)  
Antiguo 04/11/2013, 07:00
Avatar de zdedany  
Fecha de Ingreso: noviembre-2013
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Respuesta: Django Class-Based Generic Views Registrar Usuarios

¡Muchas gracias tanto por la pregunta, y por la respuesta, ambas me fueron de muchísima utilidad!

Un abrazo desde Argentina...

Como decía el amigo Erickxls, solo bastaba con definir un formulario como este:

Código Python:
Ver original
  1. #forms.py
  2. class UserForm(UserCreationForm):
  3.     email = forms.EmailField()
  4.  
  5. #Y luego darle al form_class=UserForm
  6. #Sin olvidar importar dicho formulario: from myapp.apps.registro.forms import UserForm

¡Saludos!

Daniel.-

Etiquetas: django, generic, usuarios, views
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:18.