【问题标题】:django form doesn't work on click submitdjango 表单在点击提交时不起作用
【发布时间】:2010-09-23 17:20:42
【问题描述】:

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

我现在在 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 }) 

表单已完成并且可以正常工作,但问题是当我单击提交按钮时没有任何反应。他没有给我信息

【问题讨论】:

  • 什么都没有发生?表单未提交或已提交,但您没有从中获取任何数据?
  • 其实我不久前就可以让它工作了。表单未经过验证。我在表单上做了一些更改,现在它可以工作了

标签: django django-models django-forms


【解决方案1】:

您必须定义将发送帖子数据的网址

这会将帖子数据发送到 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> 

【讨论】:

  • 我也尝试过这种方式,但这不是它不起作用的原因。什么都没有改变..
【解决方案2】:

我不明白您为什么在 models.py 和 forms.py 中都定义了 DemoDataForm,一次是作为 ModelForm,一次是作为普通表单。因此,从您发布的代码中无法准确判断您正在实例化哪个类。

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

fields = ('gender')

你需要

fields = ('gender',)

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

【讨论】:

  • 其实这是一个愚蠢的错误,我忘记了括号。对此感到抱歉,但我没有看到错误。不过谢谢你的建议。我在 django 文档中看到,我尝试过这样
  • 我去更新我的问题并发布我的最终结果。随时提出改进建议:)
猜你喜欢
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
相关资源
最近更新 更多