2010-08-20 19 views
9

ben şöyle Kullanıcı için bir modelform kullanıyorum:Django şifre problemleri

class UserForm(forms.ModelForm): 
    class Meta: 
     model = User 
     fields = ('username','password','email',) 

ama şifre alanı düzenli textfield değil, bir şifre girişi olarak görünür. Bir şifre alanı gösterdiğinden nasıl emin olurum?

class UserForm(forms.ModelForm): 
    username = forms.CharField(max_length = 15, min_length = 6) 
    password = forms.PasswordInput() 
    class Meta: 
     model = User 
     fields = ('username','password','email',) 

ama bu da işe yaramazsa:

Bu çalıştı.

Ben de şöyle bir onaylama şifre alan eklemek çalışıyorum, ama bu alanlar görüntülenmesine neden:

class UserForm(forms.ModelForm): 
    username = forms.CharField(max_length = 15, min_length = 6) 
    password = forms.PasswordInput() 
    cpassword = forms.PasswordInput() 

    def clean(self): 
     if self.cleaned_data['cpassword']!=self.cleaned_data['password']: 
      raise forms.ValidationError("Passwords don't match") 

    class Meta: 
     model = User 
     fields = ('username','password','cpassword','email',) 

cevap

19

Sen form alanlarının arasındaki farkı eksik ve widget'ları oluştururlar ediyoruz. Widget, alanın HTML temsilidir. Eğer Django 1.2 üzerinde çalışıyorsanız, bu sözdizimini kullanabilirsiniz:

DÜZENLEME: Güncelleme

class UserForm(forms.ModelForm): 

    confirm_password = forms.CharField(widget=forms.PasswordInput()) 

    class Meta: 
     model = User 
     fields = ('username','password','email',) 
     widgets = { 
      'password': forms.PasswordInput(), 
     } 
+0

sayesinde onayla şifresini dahil etmek, sana aynı olacağını yapabileceğini bilmiyordum Şifreyi onaylamak için bir şey var mı? – JPC

+0

Bu alan modelde olmadığından, ayrı ayrı bildirmeniz gerekecek ... Cevabımı güncelleyeceğim – Zach

+0

Hala neden bir girişime bir widget olarak PasswordInput belirtmek zorunda anladım emin değilim . Her ikisi de formlar değil mi? Neden sadece PasswordInput kullanamıyorum? Teşekkürler! – JPC