django表单不适用于点击提交

时间:2010-09-23 17:20:43

标签: django django-models django-forms

我正在尝试做一个有性别选择的表格。用户可以选择男性或女性。

我现在在forms.py中的内容:

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

在模板中:

<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 %} 

意见:

 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 }) 

表单已完成且有效,但问题是当我点击提交按钮时没有任何反应。他没有得到我的信息

3 个答案:

答案 0 :(得分: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> 

这会将发布数据发送到您当前的网址。

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

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

答案 1 :(得分:0)

我不明白为什么你在models.py和forms.py中定义了DemoDataForm,一次作为ModelForm,一次作为普通表单。因此,我们无法从你发布的代码中确切地告诉你要实例化哪个类。

我想说,删除forms.py中的版本,将models.py中的版本移到forms.py中,然后使用它。但首先你需要修复一个小错误 - 而不是:

fields = ('gender')

你需要

fields = ('gender',)

因为单项元组总是需要逗号,否则Python会尝试遍历字符串。

答案 2 :(得分:0)

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