2013-03-23 3 views
2

안녕하세요.장고 클래스 기반 일반 뷰 등록 사용자

간편한 사용자 등록을 위해 응용 프로그램을 만들려고합니다. 장고 1.5 사용, 내 문제는 여기에 내 코드, 사용자가 데이터베이스에 저장되지 않습니다이다 : 나는 사용자를 만들려고

#forms.py 
class UserCreationForm(forms.ModelForm): 
    username = forms.RegexField(regex=r'^[\[email protected]+-]+$',max_length=30,label='Username') 
    email = forms.EmailField(label="E-mail") 
    password1 = forms.CharField(widget=forms.PasswordInput,label="Password") 
    password2 = forms.CharField(widget=forms.PasswordInput,label="Repeat Password") 

    class Meta: 
     models = User 
     fields = ('username','email','password1','password2') 

#views.py 
from myapp.register.forms import UserCreationForm 
class CreateUser(FormView): 
    template_name = 'registration/registration_form.html' 
    success:url = '/' 
    form_class = UserCreationForm 
    def is_valid(self, form): 
     user = User.objects.create_user(form.cleaned_data['username'], 
             form.cleaned_data['email'], 
             form.cleaned_data['password1']) 
     #user.save() 
     return super(CreateUser, self).form_valid(form) 

매번, 그들은 저장되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

"나는 약간의 영어, 내 잘못을 용서 배우고 있습니다. 감사합니다"

+1

'is_valid'가 아닌'form_valid'을 원하셨습니까? – meshy

답변

1

첫째, 당신은 당신이 할, 당신은 user.save() 댓글을 달았 것을 알 수 있습니까? ;-)

그런데, 당신은 잘못된 방식으로 모든 문제에 접근하고 있습니다. 모델 인스턴스를 저장하려는 경우 FormView 대신보기의 기본으로 CreateView을 사용하십시오. 그런 식으로 is_valid 메소드와 같은 코드를 작성하지 않아도됩니다 (양식의 필드를 명시 적으로 설정할 필요가 없으며 모델 필드에서 외삽됩니다).

관련 문제