Der beste Weg, um einen Benutzer in Django zu registrieren


0 Answers

Ich habe gerade darüber nachgedacht und herausgefunden, dass Django ein sehr einfaches eingebautes neues Benutzererstellungsformular hat, das Sie verwenden können, wenn Sie eine einfache Registrierung wünschen - es gibt keine Möglichkeit, zB eine E-Mail-Adresse zu speichern und zu validieren, also wird es nicht für den Anwendungsfall des OPs funktionieren, aber ich poste es hier, falls andere wie ich auf diese Frage stoßen und nach etwas Einfachem suchen.

Wenn Sie nur möchten, dass Benutzer einen Benutzernamen und ein Kennwort auswählen können, dann werden die integrierten Funktionen alles für Sie tun , einschließlich der Überprüfung und Speicherung des neuen Benutzers:

from django.views.generic.edit import CreateView
from django.contrib.auth.forms import UserCreationForm

urlpatterns = patterns('',
    url('^register/', CreateView.as_view(
            template_name='register.html',
            form_class=UserCreationForm,
            success_url='/'
    )),
    url('^accounts/', include('django.contrib.auth.urls')),

    # rest of your URLs as normal
)

Das einzige, was Sie selbst tun müssen, ist register.html zu erstellen ...

Mehr Infos hier: http://www.obeythetestinggoat.com/using-the-built-in-views-and-forms-for-new-user-registration-in-django.html

Question

Ich versuche, die Benutzerregistrierung für meine Django-App zu implementieren. Das Buch, das ich gelesen habe, erwähnt UserCreationForm, aber ich brauche mehr als nur Name, Passwort und E-Mail-Adresse. Ich könnte mein eigenes Benutzerobjekt implementieren und ModelForm verwenden, denke ich, aber dann verliere ich einige der django Bequemlichkeiten für die Authentifizierung. Schließlich lese ich etwas über UserProfiles, die Benutzer, denke ich, ich denke, ich brauche eine Kombination all dieser Dinge. Hier ist, was ich bisher habe.

Ansicht - das ist einfach genug. Ich möchte hier nur mein Formular erstellen und den Benutzer speichern

def main(request):
    rform1 = forms.RegisterForm1()
    rform2 = forms.RegisterForm2()
    return render_to_response("authentication/index.html", {'form1': rform1, 'form2':rform2})

def register(request):
    if request.method == 'POST':
        rform1 = forms.RegisterForm1(request.POST)
        rform2 = forms.RegisterForm2(request.POST)
        if rform1.is_valid() and rform2.is_valid():
            new_user = rform1.save()
            return HttpResponseRedirect("/register-success/")
    return render_to_response("authentication/index.html", {'form1': rform1,'form2':rform2})

Formular - das ist meine Form zum Erstellen eines Benutzers. Oder der Anfang davon zumindest

class RegisterForm1(forms.ModelForm):
    class Meta:
        model = User

class RegisterForm2(forms.ModelForm):
    class Meta:
        model = UserProfile

Model - das ist mein UserProfile, mit dem ich den User ergänzen möchte.

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    phonenumber = PhoneNumberField()

Ist es klar, was ich versuche zu tun? Bin ich auf dem richtigen Weg?






Related