2017-12-05 28 views
1

私のforms.validationerrorは表示されません。私の使っているフォームは以下の通りです。 if文が動作し、問題を検出してコンテンツを正常に出力します。 Stackoverflow上の既存のエラーが示すように、printステートメントに示されているように、コンテンツはNoneではありません。Django forms.VaildationErrorがクラスベースのビューに表示されません

  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 

は、以下のエラーメッセージが表示されるはずです同じURLにリダイレクトするform.isvalidをスキップ私のクラスベースのビュー、中に私のviews.pyポスト文です。私はそれが役立つ場合、私のクラスベースのビューでdetailviewとformmixinを使用しています。トレースバックがないときにどこから問題が発生しているのかわかりません。どんな助けもありがとう。

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

をし、エラーが表示されますテンプレート内のテンプレートまたは{{ form.non_field_errors }}にエラーを表示します。フォームが有効でない場合

   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) 
+0

あなたは50以上の文字列を渡していますか? – Exprator

+0

len(content)を使って文字列の文字数を数えています。 – user3655574

+0

あなたの行と列は5 * 10 = 50に掛け合うので、テキストエリアでは50文字以上も渡していないので、エラーはどうなりますか?len> 10をチェックし、 – Exprator

答えて

2

ここで、あなたは次のように返すことがあります。

関連する問題