2016-03-20 4 views
0

Только найдены старые ответы и примеры, которые я не понял о отображении ошибок в представлении.Отображение ошибок проверки для каждого поля с поднятием ValidationError

Я создал метод clean_message в моем forms.py, который проверяет, если 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> 

Я пытался использовать {{}} form.errors, перебрать его, чтобы использовать {{form.non_field_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