2010-04-05 11 views
15

क्या कोई जानता है कि आप Django में टेक्स्टफील्ड पर स्वत: पूर्णता कैसे बंद कर सकते हैं?Django में टेक्स्टफील्ड पर स्वत: पूर्ण अक्षम करें?

उदाहरण के लिए, मेरे मॉडल से उत्पन्न एक फॉर्म में क्रेडिट कार्ड नंबर के लिए एक इनपुट फ़ील्ड है। स्वत: पूर्णता छोड़ना बुरा व्यवहार है। हाथ से फॉर्म बनाते समय, मैं एक स्वत: पूर्ण = "ऑफ" कथन जोड़ता हूं, लेकिन आप इसे 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

यह क्रोम में मेरे लिए काम नहीं करता है। यह अभी भी स्वत: पूर्ण = बंद होने पर भी उपयोगकर्ता नाम और पासवर्ड फ़ील्ड स्वत: पूर्ण करता है। – Cerin

+0

इस प्रश्न पर एक नज़र डालें: http://stackoverflow.com/questions/15738259/disabling-chrome-autofill – codescribblr

21

फॉर्म टैग पर स्वत: पूर्ण = "बंद" जोड़ें, इसलिए आपको 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' 
    })) 

यदि आप मॉडलफॉर्म का उपयोग कर रहे हैं, तो आपके पास फॉर्म में फ़ील्ड विशेषताओं को परिभाषित करने की लक्जरी नहीं होगी। हालांकि, आप आवश्यक विशेषताओं को जोड़ने के लिए __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'}), 
     } 
संबंधित मुद्दे