Отключить автозаполнение текстового поля в Django?
Кто-нибудь знает, как отключить автозаполнение текстового поля в Django?
Например, форма, которую я генерирую из моей модели, имеет поле ввода для номера кредитной карты. Плохая практика заключается в том, чтобы оставить автозаполнение. При создании формы вручную я бы добавил оператор autocomplete = "off", но как вы это делаете в Django и сохраняете форму проверки?
Ответы
Ответ 1
В вашей форме укажите виджет, который вы хотите использовать для этого поля, и добавьте в этот вид словарь attrs
. Например (прямо из документация django):
class CommentForm(forms.Form):
name = forms.CharField(
widget=forms.TextInput(attrs={'class':'special'}))
url = forms.URLField()
comment = forms.CharField(
widget=forms.TextInput(attrs={'size':'40'}))
Просто добавьте 'autocomplete'='off'
в attrs dict.
Ответ 2
Добавьте автозаполнение = "off" в тег формы, поэтому вам не нужно изменять экземпляр django.form.
<form action="." method="post" autocomplete="off">
{{ form }}
</form>
Ответ 3
Если вы определяете свои собственные формы, вы можете добавлять атрибуты к своим полям в форме.
class CommentForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={
'autocomplete':'off'
}))
Если вы используете modelforms, у вас не будет роскоши определять атрибуты полей в форме. Однако вы можете использовать __init__
для добавления необходимых атрибутов.
class CommentForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CommentForm, self).__init__(*args, **kwargs)
self.fields['name'].widget.attrs.update({
'autocomplete': 'off'
})
Вы также можете добавлять атрибуты из Meta
class CommentForm(forms.ModelForm):
class Meta:
widgets = {
'name': TextInput(attrs={'autocomplete': 'off'}),
}