2017-10-13 19 views
1

新しいユーザー登録でパスワードは保存されません。私はforms.pyパスワードは保存されません。

class RegisterForm(UserCreationForm): 
    class Meta: 
     model = User 
     fields = ('username', 'email','password1','password1',) 
    def __init__(self, *args, **kwargs): 
     super(RegisterForm, self).__init__(*args, **kwargs) 
     self.fields['username'].widget.attrs['class'] = 'form-control' 
     self.fields['email'].widget.attrs['class'] = 'form-control' 
     self.fields['password1'].widget.attrs['class'] = 'form-control' 
     self.fields['password2'].widget.attrs['class'] = 'form-control' 

regist.html

<div class="heading col-lg-6 col-md-12">
    
 
     <h2>New account registration</h2> 
 
    
 
     <form class="form-horizontal" action="regist_save/" method="POST">
    
 
      <div class="form-group-lg">
    
 
      <label for="id_username">username</label> 
 
      
   {{ regist_form.username }}
    
 
      </div>
   
    
 
      <div class="form-group-lg">
    
 
      <label for="id_email">email</label> 
 
      
    {{ regist_form.email }} 
 
      </div> 
 
      <div class="form-group-lg">
    
 
      <label for="id_password">password</label>
    
 
      {{ regist_form.password1 }}
    
 
      </div>
   
    
 
      <div class="form-group-lg"> 
 
      <label for="id_password">password(conformation)</label>
    
 
      {{ regist_form.password2 }} 
 
      <p class="help-block">{{ regist_form.password2.help_text }}</p>
    
 
      </div>
   
    
 
      <div class="form-group-lg"> 
 
      <div class="col-xs-offset-2"> 
 
      <button type="submit" class="btn btn-primary btn-lg">SUBMIT</button>
    
 
      <input name="next" type="hidden"/>
    
 
      </div> 
 
      </div> 
 
      {% csrf_token %}
    
 
     </form>
    
 
</div>

にviews.py

​​

に書きましたユーザー名&メールは正常に登録されています。だから私は本当にパスワードが登録されていない理由を理解できません。私はDjangoのチュートリアルを読んで、私のコードは大丈夫だと思います。

これはどのように修正する必要がありますか?私は何を書くべきですか?

+0

変更 'regist_form.cleaned_data.get( 'パスワード')' 'regist_form.cleaned_data.get( 'パスワード1')に' comments.Iウル – itzMEonTV

答えて

2

フォームにはpassword1password2のフィールドがあり、passwordregist_form.cleaned_data.get('password')は返されません。 だからpasswordpassword1フィールドの名前を変更する必要があります

class RegisterForm(UserCreationForm): 
    class Meta: 
     model = User 
     fields = ('username', 'email','password', 'password2',) 
+0

THXは2を持っていますパスワードは、第1と第2のパスワードが同じかどうかを確認するためのチェックであるため、提出されました。あなたのコードが私の理想的なsysgtemを行うことができるかどうかわかりません。 – user8504021

+0

@ user8504021 2つのパスワードフィールドはOKです。あなたのフォームには 'password'フィールドはありません。しかし、ビューでアクセスしようとしています: 'password = regist_form.cleaned_data.get( 'password')'。この行は常にNoneを返します。フォームフィールドの名前を 'password'に変更するか、単にビューを変更して修正することができます。 'password'を' password1'に置き換えてください: 'password = regist_form.cleaned_data.get( 'password1')' – neverwalkaloner

関連する問題