Как украсить ошибку ValidationError в Django - PullRequest
0 голосов
/ 24 апреля 2018

Я использую форму Django для контроля длины контента. Функция работает, но информация об ошибках содержит некоторые лишние слова и знаки препинания, которые мне не нужны.

Мой вопрос - как удалитьлишние слова и знаки препинания?

Вот моя форма:

def words_validator(comment):
    if len(comment) < 4:
        raise ValidationError("您输入的评论字数太短,请重新输入至少4个字符")

class CommentForm(forms.Form):
    comment = forms.CharField(widget=forms.Textarea(), validators=[words_validator])

Вот мой шаблон:

      {% if comment_form.errors %}
         <div class="ui error" >
           {{comment_form.errors}}
         </div>
     {% endif %}

Сообщение об ошибке здесь:

·comment
   。您输入的评论字数太短,请重新输入至少4个字符

Мне нужен только ', не хочу знаков препинания и названия поля' comment '.

У кого-нибудь из друзей есть решение?

1 Ответ

0 голосов
/ 24 апреля 2018

Вам нужно перебрать форму, затем field.errors,

Как,

{% for field in form %}
   {% for error in field.errors %}
       {{ error }}
   {% endfor %}
{% endfor %}

Пример:

myapp.forms.py

def words_validator(comment):
    if len(comment) < 4:
        raise ValidationError("Lenght should be greater than 4")


class Demo(forms.Form):
    comment = forms.CharField(widget=forms.Textarea(), validators=[words_validator])

Shell:

In [1]: html = """
   ...: {% for field in form %}
   ...:     {% for error in field.errors %}
   ...:         {{ error }}
   ...:     {% endfor %}
   ...: {% endfor %}
   ...:
   ...: """

In [2]: from django.template import Context, Template

In [3]: from myapp.forms import *

In [4]: form = Demo({'comment': 'abc'})

In [5]: t = Template(html)

In [6]: c = Context({'form': form})

In [7]: print t.render(c)



        Lenght should be greater than 4
...