Configuration
Utilisez-vous les django-profiles et django-registration projets? Sinon, vous devriez — beaucoup de ce code a déjà été écrit pour vous.
Profil
Votre code de profil d'utilisateur est:
class Profile(models.Model):
user = models.ForeignKey(User, unique=True)
born = models.DateTimeField('born to')
photo = models.ImageField(upload_to='profile_photo')
Demandez ce profil vous configurez correctement vos paramètres Django? Vous devez ajouter ce sinon, en remplaçant yourapp
pour le nom de votre application:
AUTH_PROFILE_MODULE = "yourapp.Profile"
Formulaire d'inscription
django-registration
est livré avec des formulaires d'inscription par défaut, mais vous avez spécifié que vous vouliez créer votre propre. Chaque Django form field defaults to required donc vous ne devriez pas avoir besoin de changer cela. La partie importante consiste simplement à s'assurer de gérer les champs de formulaire d'inscription existants et d'ajouter dans la création de profil. Quelque chose comme cela devrait fonctionner:
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
Apporter ensemble
Vous pouvez utiliser les modèles par défaut django-registration
et points de vue, mais voudra les transmettre votre formulaire dans 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'),
merci vous beaucoup – xRobot