2016-03-20 8 views
0

Nur alte Antworten und Beispiele gefunden, die ich nicht verstanden habe, um Fehler in der Ansicht anzuzeigen.Zeigt die Validierungsfehler für jedes Feld an, wenn ValidationError ausgelöst wird.

Ich habe eine clean_message Methode in meinem forms.py erstellt, die, wenn überprüft die self.message etwas haben, und wirft ein ValidationError, falls nicht.

""" 
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']) 

Und das ist die Ansichtsdatei. Was brauche ich, um die Fehler anzuzeigen, wie oben gezeigt?

<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> 

Ich habe versucht, etc zu verwenden {{form.errors}}, iterieren es, zu verwenden {{form.non_field_errors}}, aber keiner arbeitete. Ich denke irgendwie ich lade das Formular neu, und so werden die Nachrichten nicht angezeigt.

+0

Es gibt '{{form.errors}}'. Ich nehme an, Django-Doktoren erklären das ziemlich deutlich. –

Antwort

0

Um die Fehler auf Formularebene anzuzeigen, können Sie einfach Folgendes verwenden: {{ form.errors }}. Aber es scheint, dass Sie eine Fehlermeldung auf Feldebene wünschen. Dafür müssen Sie die saubere Methode als solche ändern:

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

Auf diese Weise wird der Fehler auf entsprechende field.errors eingestellt werden.

+0

Fehle ich etwas? Ich habe getan, was du gesagt hast, aber überhaupt keine Nachrichten. Vielleicht ein 'else', falls das Formular nicht gültig ist? – mfgabriel92

+0

@GabrielMFernandes Wie werden Fehler angezeigt? Haben Sie 'form.errors' benutzt? Oder 'Feld.Fehler'? –

+0

Ich habe 'form.errors' verwendet. Woher soll ich 'Feld' bekommen? Im Moment habe ich das 'clean_comment' nach einem anderen Beispiel nach' forms.py' verschoben. – mfgabriel92

Verwandte Themen