Django的:我如何添加任意的HTML属性来input表单上的字段?
我有一个像这样的模板呈现的input字段:
<div class="field"> {{ form.city }} </div>
其中呈现为:
<div class="field"> <input id="id_city" type="text" name="city" maxlength="100" /> </div>
现在假设我想要为呈现的input元素添加一个autocomplete =“off”属性,我该怎么做? 或者onclick =“xyz()”或class =“my-special-css-class”?
检查这个页面
city = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off'}))
对不起,广告,但我最近发布了一个应用程序( https://github.com/kmike/django-widget-tweaks ),使这样的任务更加痛苦,所以devise师可以做到这一点,而不需要触摸python代码:
{% load widget_tweaks %} ... <div class="field"> {{ form.city|attr:"autocomplete:off"|add_class:"my_css_class" }} </div>
或者可选地,
{% load widget_tweaks %} ... <div class="field"> {% render_field form.city autocomplete="off" class+="my_css_class" %} </div>
如果您使用的是“ModelForm”:
class YourModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(YourModelForm, self).__init__(*args, **kwargs) self.fields['city'].widget.attrs.update({ 'autocomplete': 'off' })
如果你正在使用ModelForm
,除了在他的答案中使用_Artitioo提供的__init__
的可能性,在Meta中有一个widgets
字典:
class AuthorForm(ModelForm): class Meta: model = Author fields = ('name', 'title', 'birth_date') widgets = { 'name': Textarea(attrs={'cols': 80, 'rows': 20}), }
相关文件