Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django forms.VaildationError未显示在基于类的视图上_Python_Django - Fatal编程技术网

Python Django forms.VaildationError未显示在基于类的视图上

Python Django forms.VaildationError未显示在基于类的视图上,python,django,Python,Django,未显示My forms.validationerror。下面是我正在使用的表格。if语句起作用,它检测到问题,并成功地打印出内容。正如stackoverflow上的许多现有错误所表明的,内容并非如print语句中所示的“无” class PollItemMessageAddForm(forms.ModelForm): class Meta: model = Message

未显示My forms.validationerror。下面是我正在使用的表格。if语句起作用,它检测到问题,并成功地打印出内容。正如stackoverflow上的许多现有错误所表明的,内容并非如print语句中所示的“无”

            class PollItemMessageAddForm(forms.ModelForm):
                class Meta:
                    model = Message
                    fields = [
                        "content"
                    ]

                    labels = {
                        'content': 'Add your comment',
                    }

                    widgets = {
                        'content': Textarea(attrs={'cols': 10, 'rows': 5}),
                    }


                def __init__(self, *args, **kwargs):

                    # this line should be before a super call
                    self.request = kwargs.pop('request', None)

                    super(PollItemMessageAddForm, self).__init__(*args, **kwargs)
                    self.helper = FormHelper()
                    self.helper.form_method = 'post'
                    self.helper.add_input(Submit('submit', value='Post', css_class='buttonspace btn-success'))


                def clean_content(self):
                    content = self.cleaned_data.get("content")

                    if len(content) > 50:
                        print content
                        raise forms.ValidationError("Please limit your message to less the 50 characters")

                    return content
下面是我基于类的视图中的my views.py post语句,它跳过了表单.isvalid以重定向到错误消息应该出现的同一url。如果有帮助的话,我在基于类的视图中使用detailview和formmixin。在没有回溯的情况下,我看不出问题来自何方。任何帮助都将不胜感激

                def post(self, request, *args, **kwargs):
                    url = "/polls/" + str(self.get_object().id)

                    form = self.get_form()
                    if request.method == "POST":

                        if form.is_valid():

                            print "works"

                            return self.form_valid(form)

                    return HttpResponseRedirect(url)

在此,如果表单无效,您必须按如下方式返回:

return render(request, self.template_name, {'errors': form.errors, 'form':form})

并在模板中显示错误,或者模板中的
{{form.non_field_errors}}
将显示错误。

您确定传递的字符串超过50个吗???我正在使用len(content)计算字符串中的字符数。您的行和列将乘以5*10=50,所以在文本区域中,你甚至没有传递超过50个字符,那么错误将如何产生,尝试检查len>10和check我尝试len>10,如果我输入“dude hello man”,它不会通过,如果我输入“dude hello”,它通过(计数为10),我不认为len在测量行和列的大小,它正在测量字符串的长度。您不应该在此处覆盖
post
;通常,在基于类的视图中重写get和post是个坏主意。唯一需要定义的是重定向URL,可以在
get\u success\u URL()
中完成。