2017-10-13 4 views
0

Neue Benutzerregistrierung kann nicht durchgeführt werden. schrieb ich in views.pyNeue Benutzerregistrierung kann nicht durchgeführt werden

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) 

in 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' 

in 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>

kein Fehler passiert, und wenn ich Zustellen setzen Knopf, es send detail.html, so ist es ok. Aber wenn ich adm sehe In der Site ist kein Benutzer registriert. Ich kann wirklich nicht verstehen, warum das passiert.Ich kann nicht verstehen, was falsch ist.Ich lese Django Tutorial, also denke ich, diese Art des Schreibens von Code ist in Ordnung.Wie soll ich das beheben? Was soll ich es schreiben?

Antwort

0

Ihre Formularvariable ist regist_form, aber Sie versuchen zu speichern form Versuchen Sie, user = form.save() zu user = regist_form.save() zu ändern.

Darüber hinaus müssen Sie das Kennwort für neue Benutzer setzen, können Sie commit=False für diesen Einsatz:

user = regist_form.save(commit=False) 
password = regist_form.cleaned_data.get('password') 
user.set_password(password) 
user.save() 
login(request, user) 
Verwandte Themen