2017-12-25 29 views
1

장고에서 사용자 등록 페이지를 만들려고했습니다. 모든 것이 잘되었습니다. 내가 양식 데이터를 제출할 때하지만이 아래 오류를 얻을Django - AttributeError 'User'객체를 가져 오는 중 형식 데이터를 정리하는 동안 'cleaned_data'속성이 없습니다.

AttributeError '사용자'개체가 어떤 속성 'cleaned_data'

Image of that AttributeError

I에 유래에 검색 및 오브젝트 발견이 없습니다

. cleanded_data는 object.is_valid() 뒤에 위치해야합니다. 그렇지 않으면 AttributeError를 마주보아야합니다. 하지만 is_valid()가 여전히 오류가 발생했는지 확인한 후에 배치했습니다. 내 코드 : 내가 실수를 어디 찾을 수 없습니다

views.py

class UserFormView(View): 
    form_class = UserForm 
    template_name = "music/registration_form.html" 

    def get(self, request): 
     form = self.form_class(None) 
     return render(request, self.template_name, {"form": form}) 

    def post(self, request): 
     form = self.form_class(request.POST) 

     if form.is_valid(): 
      user = form.save(commit=False) 
      username = user.cleaned_data["username"] 
      password = user.cleaned_data["password"] 
      user.set_password(password) 
      user.username = username 
      user.save() 

      user = authenticate(username= username, password= password) 

      if user is not None: 
       if user.is_active: 
        login(request, user) 
        return redirect("music:index") 

     return render(request, self.template_name, {"form": form}) 

forms.py

from django.contrib.auth.models import User 
from django import forms 

class UserForm(forms.ModelForm): 
    password = forms.CharField(widget=forms.PasswordInput) 

    class Meta: 
     model = User 
     fields = ["username", "email", "password"] 

.

답변

2

form.save()의 결과는 양식이 아닌 모델의 인스턴스입니다. form.cleaned_data에 액세스해야합니다.

그러나 양식에서 이미 설정 했으므로 여기에 사용자 이름을 입력 할 필요가 없습니다.

user = form.save(commit=False) 
password = form.cleaned_data["password"] 
user.set_password(password) 
user.save()