当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django RadioSelect用法及代码示例


本文介绍 django.forms.RadioSelect 的用法。

声明

class RadioSelect
  • template_name'django/forms/widgets/radio.html'
  • option_template_name'django/forms/widgets/radio_option.html'

类似于 Select ,但呈现为 <div> 标签内的单选按钮列表:

<div>
  <div><input type="radio" name="..."></div>
  ...
</div>
在 Django 4.0 中更改:

因此屏幕阅读器更简洁地宣布了它们,单选按钮被更改为在<div>标签中呈现。

要对生成的标记进行更精细的控制,您可以遍历模板中的单选按钮。假设一个表单 myform 带有一个字段 beatles,该字段使用 RadioSelect 作为其小部件:

<fieldset>
    <legend>{{ myform.beatles.label }}</legend>
    {% for radio in myform.beatles %}
    <div class="myradio">
        {{ radio }}
    </div>
    {% endfor %}
</fieldset>

这将生成以下 HTML:

<fieldset>
    <legend>Radio buttons</legend>
    <div class="myradio">
        <label for="id_beatles_0"><input id="id_beatles_0" name="beatles" type="radio" value="john" required> John</label>
    </div>
    <div class="myradio">
        <label for="id_beatles_1"><input id="id_beatles_1" name="beatles" type="radio" value="paul" required> Paul</label>
    </div>
    <div class="myradio">
        <label for="id_beatles_2"><input id="id_beatles_2" name="beatles" type="radio" value="george" required> George</label>
    </div>
    <div class="myradio">
        <label for="id_beatles_3"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" required> Ringo</label>
    </div>
</fieldset>

这包括<label> 标签。为了更细化,您可以使用每个单选按钮的 tagchoice_labelid_for_label 属性。例如,这个模板……

<fieldset>
    <legend>{{ myform.beatles.label }}</legend>
    {% for radio in myform.beatles %}
    <label for="{{ radio.id_for_label }}">
        {{ radio.choice_label }}
        <span class="radio">{{ radio.tag }}</span>
    </label>
    {% endfor %}
</fieldset>

…将产生以下 HTML:

<fieldset>
    <legend>Radio buttons</legend>
    <label for="id_beatles_0">
        John
        <span class="radio"><input id="id_beatles_0" name="beatles" type="radio" value="john" required></span>
    </label>
    <label for="id_beatles_1">
        Paul
        <span class="radio"><input id="id_beatles_1" name="beatles" type="radio" value="paul" required></span>
    </label>
    <label for="id_beatles_2">
        George
        <span class="radio"><input id="id_beatles_2" name="beatles" type="radio" value="george" required></span>
    </label>
    <label for="id_beatles_3">
        Ringo
        <span class="radio"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" required></span>
    </label>
</fieldset>

如果您决定不遍历单选按钮 - 例如,如果您的模板包含 {{ myform.beatles }} - 它们将在带有 <div> 标签的 <div> 中输出,如上所述。

外部<div> 容器接收小部件的id 属性(如果已定义),否则接收 BoundField.auto_id

在单选按钮上循环时,labelinput 标签分别包含 forid 属性。每个单选按钮都有一个id_for_label 属性来输出元素的 ID。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.forms.RadioSelect。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。