2017-12-12 7 views
-1

私はチェックボックスを使ってDjangoフォームを作成したいと考えています。気象に関係なく、チェックボックスをオンまたはオフにしてPOSTリクエストでは検出されません。テンプレートのコードはチェックボックス付きのDjangoフォームは常にFalseです

です
<form action="annotate_page" method="post">{% csrf_token %} 

     <input id="repeat" type="checkbox" > 
       <label for="repeat">Repeat Sentence?</label> 


     <br> 

     <button type="submit">Next</button><br> 

</form> 

は、ここに私のforms.py-ここ

from django import forms 

class AnnotateForm(forms.Form): 
    repeat=forms.BooleanField(required=False) 

が私の見解がいるロジックさ

if request.method=="POST": 

    form = AnnotateForm(request.POST) 

    if form.is_valid(): 
     print(request.POST)#prints only csrf_token in Query_dict 
     print(form.cleaned_data["repeat"])#Always false 

かかわらずです気候のチェックボックスがチェックされているかどうかにかかわらず、printステートメントは常にFalseを返します。

質問にも似ていますが、私の問題は解決しません。

+2

をキャプチャする文句を言わない、チェックボックスは、 'repeat'という名前です。しかし、あなたのhtmlテンプレートでは、チェックボックスには全く名前がありません! (idは 'repeat'ですが、それは同じものではありません) –

+2

どうしてhtmlのフォームフィールドをハードコーディングしていますか? '{{form.as_p}} 'を使用すると、Djangoがフォームを描画します。 –

答えて

1
<form action="annotate_page" method="post">{% csrf_token %} 

     <input id="repeat" name="something" type="checkbox" > 
       <label for="repeat">Repeat Sentence?</label> 


     <br> 

     <button type="submit">Next</button><br> 

</form> 

とビュー

if request.method=="POST": 

    form = AnnotateForm(request.POST) 

    if form.is_valid(): 
     print(request.POST)#prints only csrf_token in Query_dict 
     print(form.cleaned_data["something"])#Always false 

であなたが入力フィールドに名前を与える必要があるか、そうでなければ、フォーム定義で

+0

ありがとうございました!それは馬鹿でした!たぶん私は酔っています! –

関連する問題