Отключить автозаполнение текстового поля в Django? - PullRequest
17 голосов
/ 06 апреля 2010

Кто-нибудь знает, как можно отключить автозаполнение текстового поля в Django?

Например, форма, которую я генерирую из моей модели, имеет поле ввода для номера кредитной карты. Это плохая практика оставлять автозаполнение включенным. При создании формы вручную я бы добавил оператор autocomplete = "off", но как вы делаете это в Django и сохраняете проверку формы?

Ответы [ 4 ]

26 голосов
/ 06 апреля 2010

В вашей форме укажите виджет, который вы хотите использовать для поля, и добавьте словарь 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.

25 голосов
/ 09 сентября 2010

Добавьте autocomplete = "off" к тегу формы, чтобы вам не приходилось изменять экземпляр django.form.

<form action="." method="post" autocomplete="off"> {{ form }} </form>

6 голосов
/ 12 апреля 2016

Если вы определяете свои собственные формы, вы можете добавить атрибуты к своим полям в форме.

class CommentForm(forms.Form):
    name = forms.CharField(widget=forms.TextInput(attrs={
        'autocomplete':'off'
    }))

Если вы используете модели, у вас не будет возможности определить атрибуты поля в форме. Однако вы можете использовать __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'}),
        }
1 голос
/ 11 сентября 2018

Для меня добавление дополнительного атрибута в шаблонах также сработало:

`<form method="POST", autocomplete="off">
    {% csrf_token %}
    {{ form.as_p }}`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...