Отключить автозаполнение текстового поля в 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'}),
        }