You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板表单单选按钮无法显示问题求助

解决Django模板中单选按钮不显示的问题

看起来你的单选按钮不显示的核心问题是HTML结构不符合规范,导致浏览器解析DOM时出现了异常。

你当前的模板里把<form>直接放在了<ul>标签内部,但根据HTML标准,<ul>的直接子元素只能是<li>,浏览器遇到这种非法嵌套时,会自动调整DOM结构,这就导致你的单选按钮元素没有被正确渲染出来。

修正后的模板代码

把模板文件detail.html改成下面这样,调整结构并优化排版:

<h1>{{ question.question_text }}</h1>

{% if error_message %}
    <p><strong>{{ error_message }}</strong></p>
{% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">
    {% csrf_token %}
    {% for choice in question.choice_set.all %}
        <div class="choice-item">
            <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">
            <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label>
        </div>
    {% endfor %}
    <input type="submit" value="Vote">
</form>

关键调整说明

  1. 移除非法嵌套:去掉了原来的<ul>标签,避免form和ul的非法嵌套问题,这是解决单选按钮不显示的核心。
  2. 优化元素顺序:把单选按钮<input>放在<label>前面,这是更常规的写法,同时保证for和id的对应关系不变,不影响点击label选中单选按钮的功能。
  3. 调整提示位置:把错误提示移到form上方,逻辑上更合理,用户提交错误后会第一时间看到提示信息。

另外,确认你的视图代码是正常的(你当前的detail视图没问题),且question对象确实包含可用的choice数据(你之前注释的循环能显示选项,说明数据是正常的)。

内容的提问来源于stack exchange,提问作者BrigantiumXIX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:06:25