2017-10-13 18 views
0

新規ユーザー登録はできません。 私はエラーが起きていないと私はSUBMIT置くときviews.py新規ユーザー登録ができません

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>

def regist(request): 
    regist_form = RegisterForm(request.POST or None) 
    context = { 
     'regist_form': regist_form, 
    } 
    return render(request, 'registration/regist.html', context) 

@require_POST 
def regist_save(request): 
    regist_form = RegisterForm(request.POST) 
    if regist_form.is_valid(): 
     user = form.save() 
     login(request, user) 
     context = { 
      'user': request.user, 
     } 
     return redirect('detail') 

    context = { 
     'regist_form': regist_form, 
    } 
    return render(request, 'registration/regist.html', context) 
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' 

に書きましたボタンを押すと、detail.htmlが送信されますので、okです。しかし、admサイトには、ユーザーは登録されていません。 これがなぜ起こるのか本当に分かりません。何が間違っているのか理解できません。私はDjangoのチュートリアルを読んでいますので、このコードを書いているのは大丈夫です。どうすればいいですか?

答えて

0

フォーム変数はregist_formですが、保存しようとしていますformuser = form.save()user = regist_form.save()に変更してください。

はまた、あなたは、あなたがこのためにcommit=Falseを使用することができ、新規ユーザーのパスワードを設定する必要があります。

user = regist_form.save(commit=False) 
password = regist_form.cleaned_data.get('password') 
user.set_password(password) 
user.save() 
login(request, user) 
関連する問題