2017-01-01 9 views
0

フィールドの上にラベルがない場合は、フィールドの上にラベルとしてエラーが表示されます。 これは私のviews.pyです:djangoで必要なフィールドが空白のままである場合のフォーム検証エラー

@login_required(login_url='user_profile:login') 
    def NewWriting(request): 
     if request.method=="POST": 
      form=WritingForm(request.POST) 
      if form.is_valid(): 
       post=form.save(commit=False) 
       post.author=request.user 
       post.save() 
       return redirect('user_profile:index') 

     else: 
      form = WritingForm() 
      subject = Subject.objects.all() 
      return render(request,'user_profile/writing_form.html', {'form':form , 'subject':subject}) 

は、私は自分のコードに何を追加する必要がありますか? ありがとう

答えて

0

オプション1:

  • 空のデータを含むフォームを送信し、そのフォームを使用してエラーを具体的に表示できるようにするには、WritingFormクラスの特定のフィールドにrequired=False kwargを設定します。その後clean_<fieldname>link)メソッドをオーバーライドして、あなたが行うことができます:

    def clean_<fieldname>: 
        if self.cleaned_data['<fieldname>'].strip() == '': 
         raise ValidationError('This field cannot be blank!') 
        return self.cleaned_data['<fieldname>'] 
    

をそのフィールド名が何であれで<fieldname>を交換します。

オプション2:

  • default for any formは(:フィールド上のrequired=True kwarg IE)に必要なすべてのフィールドを作ることです。したがって、フィールドが必要な場合、ほとんどのブラウザは少なくとも空のフィールドにカーソルを移動し、フィールドにデータがないときにフォームを送信することを許可しません。

form.is_valid()がFalseを返した場合、またはフォームが無効な場合は何も返されません。フォームを使用した一般的な機能ビューのパターンについては、djangoのドキュメントhereを参照してください。

0

フォームが有効でない場合にレンダリングするには別のすべてを追加する必要があり、テンプレートではform.errorsを使用する必要があります。このような何かは、そのフォームの検証エラーは、ユーザーに表示するために戻ってUI /テンプレートに渡されるので、動作するはずです:...あなたのフォームクラスを見ず

@login_required(login_url='user_profile:login') 
def NewWriting(request): 
    form = None 
    if request.method=="POST": 
     form=WritingForm(request.POST) 
     if form.is_valid(): 
      post=form.save(commit=False) 
      post.author=request.user 
      post.save() 
      return redirect('user_profile:index') 

    if form is None: 
     form = WritingForm() 
    subject = Subject.objects.all() 
    return render(request,'user_profile/writing_form.html', {'form':form , 'subject':subject}) 
関連する問題