Django基于类的通用视图注册用户

时间:2013-03-23 17:57:16

标签: forms registration models django-class-based-views

晚上好朋友。

我正在尝试创建一个易于用户注册的应用程序。使用Django 1.5,我的问题是用户没有保存在数据库中,我的代码在这里:

#forms.py
class UserCreationForm(forms.ModelForm):
    username = forms.RegexField(regex=r'^[\w.@+-]+$',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 个答案:

答案 0 :(得分:1)

首先,你知道你评论过user.save(),对吗? ; - )

话虽如此,你却以错误的方式接近整个问题。如果您尝试保存模型实例,请使用CreateView作为视图的基础,而不是FormView。这样您就不需要编写所有代码,例如is_valid方法(您也不需要在表单中明确设置字段;它们将从模型的字段中推断出来。)< / p>