2016-03-20 11 views
0

ビューにエラーを表示することについて私が理解できなかった古い回答と例が見つかりました。ValidationErrorが発生している各フィールドの検証エラーを表示

私はforms.pyclean_messageメソッドを作成しました。これはself.messageに何かがあるかどうかをチェックし、そうでない場合はValidationErrorになります。

""" 
Comment 
""" 
class CommentForm(forms.Form): 
    """ 
    Comment field 
    """ 
    comment = forms.CharField(
     widget = forms.Textarea(
      attrs = { 
       'class': 'form-control', 
       'rows': 2 
      } 
     ) 
    ) 

    def clean_comment(self): 
     if self.cleaned_data['comment'] is None: 
      raise form.ValidationError({'comment': ['You must enter your comment']) 

これはビューファイルです。上記のように作成したエラーを表示するには何が必要ですか?

<form action="comment" method="POST"> 
    {% csrf_token %} 
    <div class="form-group"> 
     {{ form.comment.errors }} 
     {{ form.comment }} 
    </div> 
    <div class="form-group"> 
     <input type="submit" value="Say it" class="btn btn-success"> 
    </div> 
</form> 

Iは{{form.non_field_errors}}などを使用すること、それを反復、{{form.errorsを}}を使用しようとしてきたが、どれも働きました。どういうわけか私はフォームをリロードしているので、メッセージは表示されません。

+0

'{{form.errors}} 'があります。私はDjangoのドキュメントはこれを説明するのに非常に明白だと思います。 –

答えて

0

フォームレベルでエラーを表示するには、単に{{ form.errors }}を使用します。しかし、フィールドレベルのエラーメッセージが必要なようです。そのために、次のようなクリーンな方法を変更する必要があります

def clean_message(self): 
    if not self.message: 
     raise ValidationError({'message': ['You must enter your comment']) 

この方法は、エラーが適切なfield.errorsに設定されます。

+0

何か不足していますか?私はあなたが言ったことをしましたが、メッセージは全くありませんでした。フォームが有効でない場合には、 'else'を入れます。 – mfgabriel92

+0

@GabrielMFernandesどのようにエラーを表示していますか? 'form.errors'を使いましたか?または 'field.errors'? –

+0

私は 'form.errors'を使用しました。どこから 'フィールド'を得ることができますか?今、別の例によると、 'clean_comment'を' forms.py'に移動しました。 – mfgabriel92

関連する問題