2012-07-06 13 views
11

मेरे पास एक प्रोफ़ाइल सेटिंग पृष्ठ है जहां उपयोगकर्ता अपना पासवर्ड बदल सकते हैं और यदि वे ऐसा करते हैं तो उन्हें इसकी पुष्टि करनी होगी। मैं इसे एक आवश्यक फ़ील्ड नहीं बना सकता, क्योंकि उन्हें पासवर्ड बदलने की ज़रूरत नहीं है। क्या पासवर्ड फ़ील्ड खाली नहीं है, तो पुष्टि पासवर्ड सत्यापित करने के लिए कोई उदाहरण है? और फिर यह जांचने के लिए कि वे बराबर हैं या नहीं? मैं किसी भी तरह के उदाहरण खोजने के लिए सक्षम नहीं था ...django पासवर्ड सत्यापनकर्ता की पुष्टि

उत्तर

24

आपके प्रपत्र के clean विधि के लिए निम्न जोड़ें:

def clean(self): 
    password1 = self.cleaned_data.get('password1') 
    password2 = self.cleaned_data.get('password2') 

    if password1 and password1 != password2: 
     raise forms.ValidationError("Passwords don't match") 

    return self.cleaned_data 

संपादित

सत्यापन त्रुटि संदेश के ऊपर non_field_errors में जाना जाएगा। आपने यह निर्दिष्ट नहीं किया है कि प्रत्येक पासवर्ड फ़ील्ड पर कौन सा त्रुटि संदेश दिख रहा है, लेकिन संदर्भ के आधार पर, मुझे लगता है कि यह "यह फ़ील्ड आवश्यक है" संदेश है। यदि ऐसा है, तो सुनिश्चित करें कि आपके फॉर्म फ़ील्ड में required=False है जब आप उन्हें परिभाषित करते हैं, या यदि आप किसी फॉर्म सबक्लास (और वास्तविक फॉर्म फ़ील्ड्स को संपादित नहीं कर सकते हैं) के साथ काम कर रहे हैं तो आप फॉर्म के __init__ विधि को ओवरराइड कर सकते हैं:

class MyForm(SomeOtherForm): 
    def __init__(self, *args, **kwargs): 
     super(MyForm, self).__init__(*args, **kwargs) 

     self.fields['password1'].required = False 
     self.fields['password2'].required = False 
+0

ऊपर संपादित देखें देखें। –

+1

धन्यवाद! मैं वास्तव में इसे आपके संपादन से पहले पाया। किसी और के संदर्भ के लिए: https://docs.djangoproject.com/en/dev/ref/forms/validation/ – KVISH

+0

मुझे लगता है कि आप वास्तव में चाहते हैं कि 'अगर पासवर्ड 1 और पासवर्ड 1! = पासवर्ड 2: 'अन्यथा' पासवर्ड 1 'में पासवर्ड दर्ज करना और 'password2' में कुछ भी सत्यापन त्रुटि नहीं देगा (मान लीजिए कि आपके पास' फ़ील्ड बदलें 'फॉर्म की संभावना है, दोनों फ़ील्ड पर' आवश्यक = गलत 'है) – Anentropic

संबंधित मुद्दे