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 :)