2017-08-05 15 views
0

私はラジオ入力で作成したアンケートを作成しています。 CMDでは、すべての必須ボタンが押されたわけではないので、radio入力をクリックするごとにrequest = POSTが返されますが、form.is_validはfalseです。私はそれを今変更しました、何も動作しない、それは今も要求しません。以下はフォームが生成されない/フォームが無線入力フォームの場合is_valid = 0

私のコードです:

forms.py

class introForm(forms.ModelForm): 
    class Meta: 
     model = Intro 
     fields = ['name','education','sex',] 

models.py

class Intro(models.Model): 
EDUCATION_CHOICES = (
        ('1','1'), 
        ('2','2'), 
        ('3','3'), 
        ('4','4'), 
        ('G','Graduate'), 
        ('P','Professor') 
        ) 
SEX_CHOICES = (
      ('M','Male'), 
      ('F','Female'), 
      ) 
name = models.CharField(max_length = 10) 
education = models.CharField(max_length = 1,choices = EDUCATION_CHOICES) 
sex = models.CharField(max_length = 1, choices = SEX_CHOICES) 

views.py

def get_User_Info(request): 
#form_class = introForm(request.POST) 
if request.method == 'POST': 
    if form_class.is_valid():   
     name = request.POST['name'] 
     print(name) 
     sex = request.POST['sex'] 
     education = request.POST['education']   
     intro.objects.create(
      name = name, 
      sex = sex, 
      education = education 
     ) 
     intro.save() 
     print (connection.queries) 

     return HttpResponseRedirect("/vote/") #Save data and redirect 
else: 
    form = introForm() 
return render(request, 'Intro.html', {'introForm': form}) 

Intro.html#があるため急いで書きましたフォームは自分のためにレンダリングできませんオームの理由...

<!-- Survey/templates/Intro.html --> 
<!DOCTYPE html> 

{% load staticfiles %} 

<html> 
<body> 
<form action="" method="post" id = "introForm"> 
<p><label for="name">Name:</label> 
<input id=name type="text" name="subject" maxlength="15" required /></p> 
<p><label for="sex">Sex:</label> 
<input type="radio" name="Sex" value="M" required>Male 
<input type="radio" name="Sex" value="F" required>Female</p> 


<p><label for="education">Education:</label> 
<input type="radio" name="Education" value="1" required>1 
<input type="radio" name="Education" value="2" required>2 
<input type="radio" name="Education" value="3" required>3 
<input type="radio" name="Education" value="4" required>4 
<input type="radio" name="Education" value="G" required>Graduate 
<input type="radio" name="Education" value="P" required>Professor</p> 
</form> 
<input type="submit" value="Next" id = "next"/> 
</body> 
</html> 

ありがとうございます!

答えて

0
form_class = introForm(request.POST) 

この変数には、フォームの代わりにform_classという名前を付けました。必要な機能を実現するには、elseステートメントのフォームと同じ名前を付ける必要があります。また、if文のようなので、内部の最初の行を次のようになります。あなたがそうのようなテンプレートのformタグを使用してい

if request.method == 'POST': 
    form = introForm(request.POST) 
    if form.is_valid(): 
     .... 

...

{{ introForm }} 
+0

ありがとう!フォームは現在レンダリングされていますが、POSTレスポンスはまだありません... –

+0

フォームは確実にそのビューにポストしていますか?フォームアクションの属性を確認し、そのビューのURLを指していることを確認してください。 – zubhav

+0

はい、それは...私はただチェックしました。 CMDはget/thewebpage /を表示し、それをクリックしても更新されません...編集:私はforms.pyを追加しました –

関連する問題