with users register form example create django django-forms registration

django - users - Formulario de inscripción con el campo del perfil



django registration users (1)

Preparar

¿Estás usando los proyectos django-profiles y django-registration ? Si no es así, debes hacerlo: gran parte de este código ya se ha escrito para ti.

Perfil

Su código de perfil de usuario es:

class Profile(models.Model): user = models.ForeignKey(User, unique=True) born = models.DateTimeField(''born to'') photo = models.ImageField(upload_to=''profile_photo'')

¿Ha configurado correctamente este perfil en su configuración de Django? Debe agregar esto de lo contrario, sustituyendo yourapp por el nombre de su aplicación:

AUTH_PROFILE_MODULE = "yourapp.Profile"

Formulario de inscripción

django-registration viene con algunos formularios de registro predeterminados, pero usted especificó que quería crear el suyo propio. Cada campo de formulario de Django está predeterminado en obligatorio, por lo que no debería necesitar cambiarlo. La parte importante es simplemente asegurarse de manejar los campos de formulario de registro existentes y agregar la creación del perfil. Algo como esto debería funcionar:

from django import forms from registration.forms import RegistrationForm from yourapp.models import Profile from registration.models import RegistrationProfile class YourRegistrationForm(RegistrationForm): born = forms.DateTimeField() photo = forms.ImageField() def save(self, profile_callback=None): new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data[''username''], password=self.cleaned_data[''password1''], email = self.cleaned_data[''email'']) new_profile = Profile(user=new_user, born=self.cleaned_data[''born''], photo=self.cleaned_data[''photo'']) new_profile.save() return new_user

Reuniéndolo

Puede usar las vistas y plantillas predeterminadas de django-registration , pero querrá pasarles su formulario en urls.py :

from registration.backends.default import DefaultBackend from registration.views import activate from registration.views import register # ... the rest of your urls until you find somewhere you want to add ... url(r''^register/$'', register, {''form_class'' : YourRegistrationForm, ''backend'': DefaultBackend}, name=''registration_register''),

Tengo una pregunta simple. Este es mi perfil:

Perfil de clase (modelos.Modelo):

user = models.ForeignKey(User, unique=True) born = models.DateTimeField(''born to'') photo = models.ImageField(upload_to=''profile_photo'')

Quiero crear un FORMULARIO DE REGISTRO con estos campos (de los modelos de Usuario y Perfil):

username, first_name, last_name, born y foto.

Todos estos campos son obligatorios

Cómo puedo hacer eso ??

¿Cómo funciona get_profile () en una plantilla para este problema?

Gracias :)