2010-04-05 9 views
15

누군가 장고의 텍스트 필드에서 자동 완성 기능을 끌 수있는 방법을 알고 있습니까?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'})) 

단지의 attrs DICT에 'autocomplete'='off'를 추가합니다.

+0

감사에서 속성을 추가 할 수 있습니다! 나는 대답 1 분 전에 이것을 발견했다. 그것이 항상가는 방법이지 않습니까?! –

+3

Chrome에서이 기능을 사용할 수 없습니다. autocomplete = off 인 경우에도 여전히 사용자 이름과 암호 필드를 자동 완성합니다. – Cerin

+0

이 질문을보십시오 : http://stackoverflow.com/questions/15738259/disabling-chrome-autofill – codescribblr

21

django.form 인스턴스를 변경할 필요가 없도록 autocomplete = "off"를 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'}), 
     } 
관련 문제