django

41

में पासवर्ड इनपुट फ़ील्ड कैसे बनाएं हाय मैं कुछ फ़ील्ड और पासवर्ड फ़ील्ड के साथ django मॉडल क्लास का उपयोग कर रहा हूं। डायप्लेन जी नियमित सादा पाठ के बजाय मैं पासवर्ड इनपुट प्रदर्शित करना चाहता हूं। मैं इस तरह एक मॉडल श्रेणी का निर्माण:django

class UserForm(ModelForm): 
    class Meta: 
     password = forms.CharField(widget=forms.PasswordInput) 
     model = User 
     widgets = { 
      'password': forms.PasswordInput(), 
     } 

लेकिन मैं निम्नलिखित त्रुटि हो रही है: NameError: नाम 'फ़ॉर्म' परिभाषित नहीं है।

मैं django संस्करण 1.4.0 का उपयोग कर रहा हूं। मैंने इस लिंक का अनुसरण किया: Django password problems

अभी भी वही त्रुटि मिल रही है। मुझे क्या करना चाहिए। मुझे गलत कहां मिल रहा है। कृपया

+0

मैंने पासवर्ड इनपुट को फील्ड परिभाषा के रूप में उपयोग करने का प्रयास किया, जो काम नहीं करता था। 'Widget = form.PasswordInput' ने मेरे फॉर्म को काम करने के लिए यह चाल बनाई है। – anno1337

उत्तर

50

में मदद करें आपको अपने आयात में निम्न शामिल करने की आवश्यकता है;

from django import forms 
+0

मैंने भी कोशिश की ... मुझे अब कोई त्रुटि नहीं मिल रही है। लेकिन पासवर्ड फ़ील्ड के लिए एक ही पाठ इनपुट प्राप्त करना। प्रश्न को भी वोट देने से मेरी समस्या हल नहीं होगी। –

+17

@DarHamid मैं तकनीकी सहायता नहीं कर रहा हूं। मैंने आपके प्रश्न का उत्तर दिया है, अगर आपको कोई और समस्या है - एक और प्रश्न पूछें। लेकिन क्या आपको कुछ समय से खुद को डीबग करना चाहिए? हो सकता है कि आप कहीं भी ब्रांड्स की एक जोड़ी चूक गए हों? पहले और दूसरे पासवर्ड फ़ील्ड का नाम समान नहीं होना चाहिए? कोशिश करना सीखने का सबसे अच्छा तरीका है। – DrTyrsa

+0

मैं आपके उत्तर की सराहना करता हूं। लेकिन मैं किसी भी कोष्ठक या तो याद नहीं किया है। इसके अलावा मैंने मॉडल क्लास में मॉडल फ़ील्ड में पासवर्ड फ़ील्ड का नाम रखा है जैसा कि मॉडलफॉर्म में है। किसी भी तरह से धन्यवाद –

50

विजेट को एक फ़ंक्शन कॉल होना चाहिए, न कि संपत्ति। आप कोष्ठक याद आ रहे थे।

class UserForm(ModelForm): 
    password = forms.CharField(widget=forms.PasswordInput()) 
    class Meta: 
     model = User 
+0

क्या ब्रांड्स वास्तव में आवश्यक हैं? आप बस प्रत्येक उपयोगकर्ताफॉर्म के लिए उन्हें फिर से बनाने के बजाय प्रारंभिकरण के दौरान पासवर्ड इनपुट फ़ील्ड को ठीक करें। – blacklwhite

+0

सच नहीं है, Django विशेष रूप से 'अगर इंस्टेंसेंस (विजेट, प्रकार): विजेट = विजेट() ' – kibibu

+0

पासवर्ड के लिए टेक्स्ट फ़ील्ड क्यों बनाता है? पासवर्ड इनपुट के लिए पासवर्ड फ़ील्ड रखना स्पष्ट है? – Clayton

13

@DrTyrsa सही है। अपने कोष्ठक मत भूलना।

from django.forms import CharField, Form, PasswordInput 

class UserForm(Form): 
    password = CharField(widget=PasswordInput()) 
12

क्यों न केवल अपना पासवर्ड फ़ील्ड बनाएं जिसका उपयोग आप अपने सभी मॉडलों में कर सकते हैं।

from django import forms 

class PasswordField(forms.CharField): 
    widget = forms.PasswordInput 

class PasswordModelField(models.CharField): 

    def formfield(self, **kwargs): 
     defaults = {'form_class': PasswordField} 
     defaults.update(kwargs) 
     return super(PasswordModelField, self).formfield(**defaults) 

तो अब अपने मॉडल में आप

password = PasswordModelField() 
0

का उपयोग यह बहुत आसान है।

आपको Meta कक्षा से password फॉर्म फ़ील्ड प्राप्त करना चाहिए।