2010-04-05 2 views
15

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

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

ответ

21

В вашей форме укажите виджет, который хотите использовать для данного поля, и добавьте в этот виджет attrs словарь. Например (прямо из django documentation):

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.

+0

Спасибо! Я нашел это за 1 минуту до вашего ответа ... разве это не так, как всегда? –

+3

Это не работает для меня в Chrome. Он по-прежнему автозаполняет поля имени пользователя и пароля, даже если autocomplete = off. – Cerin

+0

взгляните на этот вопрос: http://stackoverflow.com/questions/15738259/disabling-chrome-autofill – codescribblr

21

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

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

+3

Это не работает в хроме. – nima

+0

@nima работал для меня – Jimmar

2

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

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'}), 
     } 
Смежные вопросы