2017-10-08 6 views
1

私はパスワードリセット電子メールをユーザーに送信するためのビューを作成しています。私は、ユーザーによって入力された電子メールがforms.pyのクリーンメソッドを使用して登録されているかどうかをチェックしていますが、これは正常に動作していますが、djangoテンプレートに表示するカスタムエラーメッセージを取得できません。テンプレートにカスタムdjangoフォームエラーを表示します

views.py

def send_forgotten_password_email(request): 
    heading = 'Reset Password' 
    if request.method == 'POST': 

     form = ForgottenPasswordForm(request.POST) 
     if form.is_valid(): 

      email = form.cleaned_data['email'] 

    form = ForgottenPasswordForm() 

    return render(request,'authentication/forms/forgotten_password.html',{ 
     'form':form, 
     'heading':heading, 
     }) 

forms.py

class ForgottenPasswordForm(forms.Form): 

    email = forms.CharField(
     label='Email:', 
     widget= forms.EmailInput(attrs={'class':'form-control','placeholder':'Enter email'}) 
     ) 

    def clean_email(self): 
     email = self.cleaned_data['email'] 
     email = get_object_or_none(User,email=email) 
     if not email: 
      raise forms.ValidationError("Email not found.") 
     return email 

テンプレートあなたが前にあなたの空の初期フォームを移動する必要が

{% extends "base.html" %} 
{% load static %} 

{% block title %} Forgotten Password {% endblock title %} 

{% block content %} 

<div class="row"> 
    <div class="col col-sm-12 col-md-5 col-lg-5"> 
     <div class="card"> 
      <div class="card-body"> 
      <h4 class="card-title">{{heading}}</h4> 
       <div class="alert alert-danger" role="alert"> 
        {{form.non_field_errors}} 
        {{form.errors}} 
        {{forms.errors}} 
        {{form.email.errors}} 
       </div> 
       <form method="POST"> 
        {% csrf_token %} 
        <div class="form-group"> 

        <label>{{form.email.label}}</label> 
         {{form.email}} 
        </div> 
       <button type="submit" class="btn btn-primary">Submit</button> 
       </form> 
      </div> 
     </div> 
    </div> 
</div> 




{% endblock content %} 

答えて

0

if文:

# Added this 
form = ForgottenPasswordForm() 
if request.method == 'POST': 

    form = ForgottenPasswordForm(request.POST) 
    if form.is_valid(): 

     email = form.cleaned_data['email'] 

# Remove this line 
# form = ForgottenPasswordForm() 
関連する問題