Django: Wie überprüft man, ob der Benutzername bereits existiert?

8

Ich bin nicht sehr fortgeschrittener Benutzer von Django. Ich habe viele verschiedene Methoden online gesehen, aber alle sind für modifizierte Modelle oder zu kompliziert für mich zu verstehen. Ich verwende UserCreationForm in meinem MyRegistrationForm

erneut %Vor%

Ich habe Mühe zu verstehen oder finde einen Weg, um zu überprüfen, ob der Benutzername, den der Benutzer eingibt, bereits vergeben ist oder nicht. Also benutze ich das um mich in HTML umzuleiten, wo es sagt, dass der falsche Benutzername oder Passwörter nicht übereinstimmen:

%Vor%

Hier ist meine Registrierungsvorlage (falls erforderlich):

%Vor%

Aber ich muss eine Art Ausnahme oder SMS so rasieren, bevor der Benutzer umgeleitet wird. Vielleicht, wenn der Benutzer auf "Registrieren" klickt, bekommt er den Fehler / warning, dass der Benutzername bereits vergeben ist. Ist das möglich?

    
pptt 12.04.2015, 11:17
quelle

2 Antworten

15

Sie können verwenden :

%Vor%     
JuniorCompressor 12.04.2015 11:28
quelle
3

Sie können prüfen, ob das username mit der clean_username -Methode existiert und ValidationError :

%Vor%

In diesem Fall können Sie den Fehler im Anmeldeformular anzeigen und müssen nicht auf eine andere Seite umleiten.

update:

Laut @Spacedman wurde ein gültiger Punkt bezüglich der Race-Bedingungen für die Überprüfung der Benutzernamen-Eindeutigkeit auf der Formularlogik gegenüber DB-Levels angegeben, obwohl Ihre Chance, dies zu erhalten, sehr unwahrscheinlich ist, falls Sie dies tun Lesen:

Wie man Race-Condition mit einzigartigen Check-Ins zu vermeiden Django

Rennbedingungen in Django

Ein weiteres Update

Wie aus dem OP-Kommentar hervorgeht, kann hier eine weitere Änderung für die Ansichten vorgenommen werden:

%Vor%

Hoffe, das hilft.

    
Anzel 12.04.2015 11:32
quelle