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}), } 

相关文件