Wenn ich fertig bin, geben Sie meinen Benutzernamen und das Passwort ein, dieser Fehler ist explodieren, er schreibt, dass Benutzername und Passwort nicht übereinstimmten, aber alle Daten sind valide und wahr! wie man es repariert? Wie überprüft man das Passwort, wenn das Passwort in der Datenbank in verschlüsselter Form gespeichert ist, und das mitgelieferte Passwort in Form eines Strings!wie man Formen Passwort-Validierung zu beheben, Passwort nicht übereinstimmte
Vielen Dank für Ihre Hilfe, ich werde mich auf Ihren Rat freuen!
forms.py
class UserLogInForm(forms.Form):
username = forms.RegexField(regex=r'^\w+$', widget=forms.TextInput(attrs=dict(required=True, max_length=30)), label=_("Username"), error_messages={ 'invalid': _("This value must contain only letters, numbers and underscores.") })
password = forms.CharField(widget=forms.PasswordInput(attrs=dict(required=True, max_length=30, render_value=False)), label=_("Password"))
def clean_username(self):
user = User.objects.get(username__iexact=self.cleaned_data['username'])
if user:
return self.cleaned_data['username']
else:
raise forms.ValidationError('This user does not exist!')
def clean(self):
username = self.cleaned_data['username']
password = self.cleaned_data['password']
user = User.objects.filter(username=username)
if user.count() == 1:
user = user.first()
if user.check_password(password):
raise forms.ValidationError("Incorrect password!")
return self.cleaned_data
else:
raise forms.ValidationError('This user does not exist!')
views.py
def login_view(request):
form = UserLogInForm(request.POST or None)
if form.is_valid():
username = form.cleaned_data['username'],
password = form.cleaned_data['password'],
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('/')
else:
return redirect('accounts/login')
context = {'form':form}
return render(request, 'accounts/registration/login.html', context)
Ich kann Ihre Antwort nur nach 6 Minuten akzeptieren, aber ich habe 1 Frage, alles läuft gut, aber autorisierte mich nicht –
Darf ich vorschlagen eine größere Änderung in Ihrer sauberen Methode? – zaidfazil
Natürlich werde ich nur glücklich sein) –