Django: как добавить произвольные атрибуты html в поля ввода формы?
у меня есть поле ввода, которое отображается с шаблоном так:
<div class="field">
{{ form.city }}
</div>
который отображается как:
<div class="field">
<input id="id_city" type="text" name="city" maxlength="100" />
</div>
теперь предположим, что я хочу добавить autocomplete="off"
атрибут входного элемента, который отображается, как бы я это сделал? Или onclick="xyz()"
или class="my-special-css-class"
?
4 ответов
извините за рекламу, но я недавно выпустил приложение (https://github.com/kmike/django-widget-tweaks), что делает такие задачи еще менее болезненными, поэтому дизайнеры могут сделать это, не касаясь кода 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
помимо возможности использования __init__
как @Artificioo предоставил в своем ответе, есть widgets
словарь В мета, если на то пошло:
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ('name', 'title', 'birth_date')
widgets = {
'name': Textarea(attrs={'cols': 80, 'rows': 20}),
}