2010-09-23 48 views
0

我试图做一个表格,与性别的选择。用户可以选择男性还是女性。django表单不能在点击提交

我现在有什么forms.py:

<form action="" method="post"> 
    {% for field in form_gender %} 
     {{ field }} 
    {% endfor %} 

<input type="submit" value="Submit" /> 
</form> 
{% if idgender %} 
    <img src="/age_gender/{{ idgender }}.png" alt="Graph"/> 
{% endif %} 

的看法:

class GenderForm(forms.Form): 
    demo = DemoData.objects.all() 
    GENDER_CHOICES = [ 
     ('Male', 'Masculino'), 
     ('Female', 'Feminino')] 

    gender = forms.ModelChoiceField(demo, widget=Select(), required=True) 
    choices_distlabel = [('', '')] + GENDER_CHOICES 
    gender.choices = choices_distlabel 
模板

if form_gender.is_valid(): 
     gender = form_gender.cleaned_data['gender'] 
     gender = gender.gender 
     if gender: 
      idgender = gender 
     return render_to_response('age.html', {'form_gender': form_gender, 'idgender': idgender }) 

形式完成,作品,但问题是当我点击提交按钮时什么也没有发生。他没有给我的信息

+0

什么意思是“什么都没有发生”?表单没有提交或它是,但你没有从它获得任何数据? – yedpodtrzitko 2010-09-30 08:25:33

+0

其实我之前就能做到这一点。表单未被验证。我在表单上做了一些更改,现在它工作 – pavid 2010-09-30 09:51:02

回答

0

我不明白你为什么已经在Model.py和forms.py中定义了DemoDataForm,一次是作为ModelForm定义的,一次是作为一个普通的形式。因此,从您发布的代码中无法确定您正在实例化的是哪个类。

我会说,将这个版本放在forms.py中,将models.py中的一个移动到forms.py中,然后使用它。但是,首先你需要修复的bug轻微的 - 而不是:

fields = ('gender') 

你需要

fields = ('gender',) 

因为一项的元组总是需要一个逗号,否则Python将试图通过迭代串。

+0

其实这是一个愚蠢的错误,我忘了一个括号。对不起,但我没看到错误。但是,谢谢你的建议。我在django文档中看到过,我试过这样的 – pavid 2010-09-24 15:31:34

+0

我更新了我的问题并发布了我的最终结果。随意建议改进:) – pavid 2010-09-24 15:45:10

0

在上面的代码中,提交按钮在表单标签之外?它不应该在表单标签内吗?

+0

我的错误写作。这不是那个问题,因为我只是把这个错误复制到这里 – pavid 2010-09-28 17:20:49

2

你必须定义的网址,让后数据将被发送

这会后的数据发送到URL/my_app应用/ my_view/

<form action="/my_app/my_view/" method="post"> 
    {% for field in form_gender %} 
     {{ field }} 
    {% endfor %} 

<input type="submit" value="Submit" /> 
</form> 

这会后的数据发送到当前的URL你在。

<form action="." method="post"> 
    {% for field in form_gender %} 
     {{ field }} 
    {% endfor %} 

<input type="submit" value="Submit" /> 
</form> 
+0

我也试过这种方式,但这不是它不起作用的原因。没变化.. – pavid 2010-09-28 17:59:12