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