2
ユーザー名とパスワードの入力が完了すると、このエラーは吹き飛び、ユーザー名とパスワードは一致しませんが、すべてのデータは真実です!どのようにそれを修正するには? データベースのパスワードが暗号化された形式で保存され、指定されたパスワードが文字列の形式で保存されている場合、パスワードを確認する方法!フォームのパスワード検証を修正する方法パスワードが一致しません
ご協力いただきありがとうございます、私はあなたのアドバイスをお待ちしております!
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)
私は6分後に回答を受け入れることができますが、1つの質問がありますが、すべてうまくいっていますが、私に許可しませんでした –
あなたのクリーンメソッドの大きな変更を提案できますか? – zaidfazil
もちろん、私は幸せになるでしょう) –