2016-04-29 16 views
0

ユーザーのパスワードを変更するために確認用の電子メールを送信したいと思います。 'モデルフォーム'には属性cleaned_dataがありません

私はジャンゴでの古典的な問題を抱えていると、サーバーは、このエラーを返します:私はStackOverflowの中にいくつかの答えをチェックした場合

「モデルフォーム」を、私はドンを

def forgottenPwdEmail(request): 
    if request.method == 'POST': 
     form = PasswordResetRequestForm(request.POST) 
     if User.objects.filter(email = form.cleaned_data['email']).exists() and form.is_valid(): 
      user = form.cleaned_data['email'] 
      sendResetPasswordMail(user, request.META['HTTP_HOST']) 
      return redirect('passwordConfirmation') 
    else: 
     form = PasswordResetRequestForm() 
    return render(request, 'front/reset_password_form.html', {'form': form}) 

cleaned_data何の属性を持っていませんform.is_valid()メソッドを呼び出してください。私は検索を続けますが、コードは昨日働いていましたが、ユーザーが接続されているときだけでした。ユーザーがパスワードを忘れた場合、彼は自分のセッションに接続できません。

私の英語のため申し訳ありませんが、私は非常によく、それを話すことはありませんが、あなたはあなたがform.is_valid()を呼び出す前に、アクセスcleaned_dataしようとしている:)

+1

django.contrib.authには、パスワードリセット電子メールの機能が組み込まれています。あなたは自分で書くのではなく、それを使いたいかもしれません。 –

+0

いくつかの理由で、私はジャンゴの管理と私のウェブサイトをプロダクションで送ることができません。私は既に電子メールのリセット機能を使用していましたが、今私は自分自身をwirteする必要があります。 –

+0

私はDanielに同意し、可能であれば組み込みのパスワードリセット機能を使用します。 [django auth views](https://docs.djangoproject.com/en/1.9/topics/auth/default/#module-django.contrib.auth.views)は、Django管理者とは別のものです。管理者なしで使用することができます。 – Alasdair

答えて

3

をしたい場合、私はあなたの詳細を与えることができます。

if User.objects.filter(email = form.cleaned_data['email']).exists() and form.is_valid(): 

を私はあなたが順序変更する場合は、cleaned_dataを取得すると思います。後者の場合フォームで

if form.is_valid() and User.objects.filter(email = form.cleaned_data['email']).exists(): 

を最初に検証され、それが有効である場合に必要になりますそのデータをif条件の2番目の節で使用できるようにします。

+0

あなたのコメントをありがとうが、私は今この答えがあります: 'ユニコード' –

関連する問題