2016-03-20 10 views
0

Sadece eski cevaplar ve örnekler, görünümde hataları görüntülemeyle ilgili anlamadım.ValidationError kaldırıldı ile her alanın doğrulama hatalarını görüntüleyin

Ben self.message şey vardır ve durumunda bir ValidationError değil yükseltir eğer kontrol ettiğinden, benim forms.py bir clean_message yöntemi oluşturduk.

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

Ve bu görünüm dosyasıdır. Yukarıda gösterildiği gibi oluşturulan hataları görüntülemek için neye ihtiyacım var?

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

ben vb {{form.non_field_errors}} kullanmak, aş yineleme, {{form.errors}} kullanmayı denedik, ama hiçbiri çalıştı. Sanırım bir şekilde formu yeniden yüklüyorum ve bu yüzden mesajlar görüntülenmiyor.

+0

'{{form.errors}}' vardır. Sanırım Django doktorları bunu açıklamakta oldukça açık. –

cevap

0

Hataları form düzeyinde görüntülemek için, aşağıdakileri kullanabilirsiniz: {{ form.errors }}. Ama alan seviyesi hata mesajı istiyor gibi görünüyor. Bunun için, örneğin temiz yöntemini değiştirmek gerekir:

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

Bu sayede, hata, uygun field.errors üzerine kurulacaktır.

+0

Bir şey mi eksik? Söylediklerinizi yaptım ama hiç mesaj almadım. Formun geçerli olmaması durumunda belki de 'else' yazabilir mi? – mfgabriel92

+0

@GabrielMFernandes Hataları nasıl görüntülüyorsunuz? Form.errors kullandınız mı? Veya 'field.errors'? –

+0

Form.errors' kullanıyorum. Sahadan nereden alabilirim? Şu anda, başka bir örneğe göre, "clean_comment" öğesini forms.py'ye taşıdım. – mfgabriel92

İlgili konular