2009-07-02 20 views
14

In der Django-Registrierung wird angegeben, dass Sie ein benutzerdefiniertes Profil speichern können, wenn Sie einen Benutzer speichern.
Aber ich habe keine Ahnung, was die Dokumentation von mir verlangt. Hier ist, was sie sagen:Profil mit Registrierung in Django-Registrierung speichern

Um das Erstellen eines benutzerdefinierten Benutzerprofil zu ermöglichen zusammen mit der User (zB spezifiziert das Modell in der AUTH_PROFILE_MODULE Einstellung), definieren Sie eine Funktion, die weiß, wie man schaffen und eine Instanz, dass speichern Modell mit entsprechenden Standardwerten und übergeben Sie es als Schlüsselwortargument profile_callback. Diese Funktion soll ein Schlüsselwort Argument akzeptieren:

user

Die User um das Profil zu beziehen.

Kann mir jemand ein Beispiel für die Funktion geben, die erstellt werden muss und wie man sie als Argument übergeben kann?

Antwort

8

Sie können die Callback-Funktion in Ihrer urls.py-Datei übergeben.

from mysite.profile.models import UserProfile 


url(r'^accounts/register/$',  'registration.views.register', 
     { 'profile_callback': UserProfile.objects.create }, name = 'registration_register'), 

Ersetzen Sie bei Bedarf Ihre eigene Funktion für UserProfile.objects.create.

+0

Nun, ich muss das gleiche tun ... aber ich kann verstehen, wie schlecht das Profilformular in der Beispielstelle des Registerformulars zeigen und die Daten speichern ... ich weiß nicht, ich bin verloren ... danke – Asinox

+1

Dies ist in der Django-Registrierung 0.8+ nicht mehr der Fall – Gezim

6

Das in this blogpost und erweitert auf in meiner Antwort auf another question on the same issue

django-Registrierung abgedeckt sendet ein Signal verschiedene Veranstaltungen an geschieht - Registrierung und Aktivierung. An jedem dieser Punkte können Sie einen Haken für dieses Signal erstellen, dem der Benutzer und die Anfrageobjekte zugewiesen werden - von dort können Sie ein Profil für diesen Benutzer erstellen.

Das Signal von django-Registrierung

#registration.signals.py 
user_registered = Signal(providing_args=["user", "request"]) 

-Code-Profil erstellen

#signals.py (in your project) 
user_registered.connect(create_profile) 

def create_profile(sender, instance, request, **kwargs): 
    from myapp.models import Profile 
    #If you want to set any values (perhaps passed via request) 
    #you can do that here 

    Profile(user = instance).save() 
Verwandte Themen