0
私はパスワード変更フォームに問題があります。 私はDjangoのパスワードリセット機能を使いたくありません。Django 1.11 - パスワードリセット
def view_password(request):
if request.user.is_authenticated():
if request.method == 'POST':
form = ChangePasswordForm(request.POST)
if form.is_valid():
new_password = form.cleaned_data['new_password']
confirm_password = form.cleaned_data['confirm_password']
if new_password == confirm_password:
strengh = new_password[0].isalpha()
if all(c.isalpha() == strengh for c in new_password):
messages.add_message(request, messages.INFO, 'Le mot de passe doit contenir au moins 8 charactères lettres et chiffres.')
else:
update = User.objects.get(id=request.user.id)
update.set_password('new_password')
update.save()
messages.add_message(request, messages.INFO, 'Votre mot de passe a bien été changé.')
else:
messages.add_message(request, messages.INFO, 'La confirmation du mot de passe est incorrect.')
else:
messages.add_message(request, messages.INFO, 'Une erreur est survenue pendant la modification.')
else:
form = ChangePasswordForm()
return render(request, 'password.html', locals())
else:
from start.views import view_logon
messages.add_message(request, messages.INFO, 'Vous devez être connecté pour accéder à cette page.')
return redirect(view_logon)
フォームがうまく動作し、パスワードの変更が行われます。しかし、データベースを見た後、新しいパスワードが十分にハッシュ化されていないようです。実際に新しいパスワードまたは古いパスワードでログインしようとすると、動作しません。
ありがとうございました。
おそらく 'new_password'の引用符を削除するだけです:' update.set_password(new_password) '?:) – neverwalkaloner
ええ、助けてくれてありがとう:)私は休憩が必要です^^ – GrandGTO