更改 RadioSelect django 小部件的默认标记
Changing the default markup of the RadioSelect django widget
我正在使用 python 版本 3.6.8 和 django 版本 3.0.8。我在这个论坛上看到了很多与此相关的主题,但有些是非常古老的答案。不确定要遵循哪一个。我尝试参考 django 官方文档,它确切地讨论了我想要从默认的 ul/li 标记自定义的标记,用于无线电 select 到我自己的样式 css。不知道我错过了什么。任何人都可以帮助我如何在我使用的 django 版本中实现这一目标。提前致谢。
Django 官方文档:
https://docs.djangoproject.com/en/3.0/ref/forms/widgets/#radioselect
当我尝试执行此操作时出现错误:模板渲染期间出错 'ChoiceField' 对象不可迭代
forms.py代码如下:
from django import forms
class ContactUsForm(forms.Form):
name = forms.CharField(label='Name',
widget=forms.TextInput(attrs={'class' : 'form__input', 'placeholder' : 'Name'}))
email = forms.EmailField(label='Email',
widget=forms.EmailInput(attrs={'class' : 'form__input', 'placeholder' : 'Email'}))
mobile = forms.CharField(label='Mobile',
widget=forms.TextInput(attrs={'class' : 'form__input', 'placeholder' : 'Mobile', 'type' : 'tel'}))
message = forms.CharField(label='Message', widget=forms.Textarea(attrs={'class' : 'form__input',
'placeholder' : 'Message', 'rows' : "4" , 'cols' : '50'}))
CHOICES = [
('1', 'New Projects'),
('2', 'Interiors'),
('3', 'Land Resale'),
('4', 'Joint Venture'),
('5', 'Renovation'),
('6', 'Others'),
]
cat_field = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class' : 'form__radio-input', 'name' : 'services'}),
choices=CHOICES)
我在模板中使用的模板标签如下:
{% for radio in form.fields.cat_field %}
<div class="myradio">
{{ radio }}
</div>
{% endfor %}
请像this.Here一样使用我们考虑的小部件input type
。类型是radio
然后做点什么。
{% for field in form.visible_fields %}
<li>
{% if field.field.widget.input_type == 'radio' %}
<div class="myradio">
{{ radio }}
</div>
{% endif %}
</li>
{% endfor %}
用于打印您的小部件类型
{{ [FIELD].field.widget.input_type }}
[FIELD] 是您的字段名称。
我正在使用 python 版本 3.6.8 和 django 版本 3.0.8。我在这个论坛上看到了很多与此相关的主题,但有些是非常古老的答案。不确定要遵循哪一个。我尝试参考 django 官方文档,它确切地讨论了我想要从默认的 ul/li 标记自定义的标记,用于无线电 select 到我自己的样式 css。不知道我错过了什么。任何人都可以帮助我如何在我使用的 django 版本中实现这一目标。提前致谢。
Django 官方文档:
https://docs.djangoproject.com/en/3.0/ref/forms/widgets/#radioselect
当我尝试执行此操作时出现错误:模板渲染期间出错 'ChoiceField' 对象不可迭代
forms.py代码如下:
from django import forms
class ContactUsForm(forms.Form):
name = forms.CharField(label='Name',
widget=forms.TextInput(attrs={'class' : 'form__input', 'placeholder' : 'Name'}))
email = forms.EmailField(label='Email',
widget=forms.EmailInput(attrs={'class' : 'form__input', 'placeholder' : 'Email'}))
mobile = forms.CharField(label='Mobile',
widget=forms.TextInput(attrs={'class' : 'form__input', 'placeholder' : 'Mobile', 'type' : 'tel'}))
message = forms.CharField(label='Message', widget=forms.Textarea(attrs={'class' : 'form__input',
'placeholder' : 'Message', 'rows' : "4" , 'cols' : '50'}))
CHOICES = [
('1', 'New Projects'),
('2', 'Interiors'),
('3', 'Land Resale'),
('4', 'Joint Venture'),
('5', 'Renovation'),
('6', 'Others'),
]
cat_field = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class' : 'form__radio-input', 'name' : 'services'}),
choices=CHOICES)
我在模板中使用的模板标签如下:
{% for radio in form.fields.cat_field %}
<div class="myradio">
{{ radio }}
</div>
{% endfor %}
请像this.Here一样使用我们考虑的小部件input type
。类型是radio
然后做点什么。
{% for field in form.visible_fields %}
<li>
{% if field.field.widget.input_type == 'radio' %}
<div class="myradio">
{{ radio }}
</div>
{% endif %}
</li>
{% endfor %}
用于打印您的小部件类型
{{ [FIELD].field.widget.input_type }}
[FIELD] 是您的字段名称。