我正在尝试做一个有性别选择的表格。用户可以选择男性或女性。
我现在在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 })
表单已完成且有效,但问题是当我点击提交按钮时没有任何反应。他没有得到我的信息
答案 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)
在上面的代码中,提交按钮是外部表单标签吗?它不应该在表格标签内吗?