如何在Django中修饰ValidationError

时间:2018-04-24 18:10:24

标签: django django-forms django-templates django-views

我使用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个字符

我只需要&#39; 您输入的评论字数太短,请重新输入至少4个字符&#39;,不要标点符号和字段名称&#39;的评论&#39;

有朋友有解决方案吗?

1 个答案:

答案 0 :(得分:0)

你需要遍历表单,然后是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])

外壳:

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