2010-04-05 20 views
15

Django'daki bir metin alanında otomatik tamamlamayı nasıl kapatabileceğinizi bilen var mı? Örneğin, modelimden oluşturduğum bir formun kredi kartı numarası için bir giriş alanı var. Otomatik tamamlama açık bırakmak kötü bir uygulamadır. Formu el ile yaparken, bir otomatik tamamlama = "kapalı" deyim ekleyelim, ancak Django'da nasıl yapıyorsunuz ve form doğrulamasını hala koruyorsunuz?Django'daki metin alanında otomatik tamamlamayı devre dışı bırakılsın mı?

cevap

21

Formunuzda, kullanmak istediğiniz widget'ı belirtin ve bu widget'a bir attrs sözlük ekleyin. (Düz django documentation itibaren) Örneğin:

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'})) 

Sadece attrs dict 'autocomplete'='off' ekleyin.

+0

teşekkür gelen özelliklerini ekleyebilirsiniz! Cevabınızdan 1 dakika önce burayı buldum ... öyle değil mi? –

+3

Bu, Chrome'da benim için çalışmıyor. Otomatik tamamlama kapalıyken bile kullanıcı adı ve şifre alanlarını otomatik olarak tamamlar. – Cerin

+0

Bu soruya bir göz atın: http://stackoverflow.com/questions/15738259/disabling-chrome-autofill – codescribblr

21

Otomatik tamamlama = "kapalı" form etiketine ekleyin, böylece django.form örneğini değiştirmeniz gerekmez. Kendi formlarını tanımlıyorsanız

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

+3

Bu, kromda çalışmaz. – nima

+0

@nima benim için çalıştı – Jimmar

2

, Formda alanlara özelliklerini ekleyebilir.

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

Modelformları kullanıyorsanız, formdaki alan özniteliklerini tanımlama lüksüne sahip olmazsınız. Ancak, gerekli öznitelikleri eklemek için __init__'u kullanabilirsiniz.

class CommentForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(CommentForm, self).__init__(*args, **kwargs) 
     self.fields['name'].widget.attrs.update({ 
      'autocomplete': 'off' 
     }) 

Ayrıca Meta

class CommentForm(forms.ModelForm): 
    class Meta: 
     widgets = { 
      'name': TextInput(attrs={'autocomplete': 'off'}), 
     } 
İlgili konular