为什么在Django中使用RadioSelect表单时无法获取单选按钮?
我正在构建一个页面,用户可以通过单选按钮选择一个月。我还需要收集其他信息,如名字、姓氏、电子邮件、电话号码和公司。在这样做的过程中,我认为使用Django表单应该可以完成这项工作。我开始并实现了所有的事情,然后开始单选按钮的部分。我发现我需要使用ChoiceField来实现这一点,RadioSelect是其中的一个小部件。我所有的选择都显示出来了,但是我不能点击任何一个来选择它们。此外,这将是一个必要的问题,我不知道如何使这成为一个必要的形式,因为它可以留空,我看到它仍然会张贴没有问题 我在谷歌上搜索了阳光下的一切。我试图为它设置一个初始选择,希望它至少显示一个单选按钮,但没有成功。我试着只做widget=forms.Select而不是RadioSelect,仍然显示月份,但我无法选择任何月份。不知道该怎么办。如果有帮助的话,这就是利用Django 2.1 index.html-请注意,虽然我在这里有一个放置月份单选按钮的位置,但我试图在模板中不包含它们,而希望它们位于form.py文件中 {%extends'landingpage/layout.html%}为什么在Django中使用RadioSelect表单时无法获取单选按钮?,django,python-3.x,django-forms,Django,Python 3.x,Django Forms,我正在构建一个页面,用户可以通过单选按钮选择一个月。我还需要收集其他信息,如名字、姓氏、电子邮件、电话号码和公司。在这样做的过程中,我认为使用Django表单应该可以完成这项工作。我开始并实现了所有的事情,然后开始单选按钮的部分。我发现我需要使用ChoiceField来实现这一点,RadioSelect是其中的一个小部件。我所有的选择都显示出来了,但是我不能点击任何一个来选择它们。此外,这将是一个必要的问题,我不知道如何使这成为一个必要的形式,因为它可以留空,我看到它仍然会张贴没有问题 我在谷歌
{% block content %}
<div class="h1 col s3 left-align grey lighten-4" style="font-family: 'Exo', sans-serif;">Welcome to FaithGuard</div>
<div class="div">
<br>
<br>
<br>
<br>
</div>
<div class="row" style="font-family: 'Exo', sans-serif;">
<form method='POST' class="col s6"> {% csrf_token %}
{{ form }}
<div class="h1 col s6 grey lighten-4 radioRequired">Date of renewal/expiration</div>
<br>
<br>
<div class="div" id ="Exiration Month Div">
<p>
<label>
<input name="month" value ="January" type="radio" />
<span>January</span>
</label>
<label>
<input name="month" value ="February" type="radio" />
<span>February</span>
</label>
<label>
<input name="month" value="March" type="radio" />
<span>March</span>
</label>
<label>
<input name="month" value="April" type="radio" />
<span>April</span>
</label>
</p>
<p>
<label>
<input name="month" value="May" type="radio" />
<span>May</span>
</label>
<label>
<input name="month" value="June" type="radio" />
<span>June</span>
</label>
<label>
<input name="month" value="July" type="radio" checked/>
<span>July</span>
</label>
<label>
<input name="month" value="August" type="radio" />
<span>August</span>
</label>
</p>
<p>
<label>
<input name="month" value="September" type="radio" />
<span>September</span>
</label>
<label>
<input name="month" value="October" type="radio" />
<span>October</span>
</label>
<label>
<input name="month" value="November" type="radio" />
<span>November</span>
</label>
<label>
<input name="month" Value="December" type="radio" />
<span>December</span>
</label>
</p>
<div class="div right-align">
<button class="btn waves-effect waves-light" type="submit" name="action">Submit</button>
</div>
</div>
</form>
</div>
{% endblock %}
forms.py
我所期望的是,在接下来的几个月里,用户可以通过单选按钮进行选择
除非您真的必须自己做,否则应该让Django为您呈现输入标记 您可以让它用{form}或{{form.as_p}或类似的方法呈现整个表单。或者可以呈现单个字段,如:{{form.month}}和{{{form.month.errors}},以显示任何验证错误。相关文件:
我认为您当前的问题是在单个元素中存在重复输入,即具有相同名称属性的输入。一组输入单选按钮来自{{form}}模板标记,另一组在模板中硬编码。尝试删除硬编码输入,看看表单是否开始按预期运行。这里有很多问题,但要澄清一点,因为它们具有相同的isue,django radio select在大多数情况下都会显示类似的内容
<label>
{{ radio.choice_label }}
<span>{{ radio.tag }}</span>
</label>
这就是为什么收音机不能正常播放的原因
<label>
<span>name_of_choice
<input />
</span>
</label>
我们需要这样做才能工作
{% for radio in form.clientes %}
<label>
{{ radio.tag }}
<span>{{ radio.choice_label }}</span>
</label>
{% endfor %}
我建议您将views.py中的参数传递给forms.py,以获得“我清理模板”和正确的值,如果您对此有疑问,请告诉我。请显示视图和模板。Worksforme,问题可能在其他地方。一些花式JS?@DanielRoseman,我加上去的。谢谢您的回复。@frnhr,我很高兴它对您有用。里面没有花哨的JS。尚未添加任何内容。@编码招聘人员除了2个月之外,您应该从模板中删除手动创建的一个月。您的代码运行正常-我可以看到打印的验证数据和发布数据。感谢您的回复。我只是在RadioSelect不起作用后才添加了第二组输入。它显示月份,但不能选择月份。我删除了第二个输入,但仍然存在相同的问题。我想可能是我的浏览器。
<label>
<span>name_of_choice
<input />
</span>
</label>
{% for radio in form.clientes %}
<label>
{{ radio.tag }}
<span>{{ radio.choice_label }}</span>
</label>
{% endfor %}