Django中的自定义用户注册

Django中的自定义用户注册,django,registration,Django,Registration,不知何故,我正在努力寻找一种在Django中注册用户的方法 我想接受用户的名字、姓氏、电子邮件地址(用作用户名)以及密码和确认密码,以检查输入错误 我上了一堂形式课 class UserForm(forms.ModelForm): firstname = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'First name'}), label="Firstname", required=True) la

不知何故,我正在努力寻找一种在Django中注册用户的方法

我想接受用户的名字、姓氏、电子邮件地址(用作用户名)以及密码和确认密码,以检查输入错误

我上了一堂形式课

class UserForm(forms.ModelForm):
    firstname =  forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'First name'}), label="Firstname", required=True)
    lastname = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Last name'}), label="Lastname", required=True)
    username = forms.EmailField(required=True, label='Email')
    password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password'}), label="Password", required=True)

    class Meta:
        model = User
此表单需要显示在我的索引页中。(比如facebook)

我至少阅读了十几本指南来实现这一点,但不知何故,它甚至没有通过表单验证

我的视图有以下代码

def index(request):
    if request.method == 'POST':
        user_form = UserForm(data=request.POST)

        if user_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()

            return HttpResponseRedirect("registered.html")
        else:
            print(user_form.errors)
    else:
        user_form = UserForm()

    return render(request, 'index.html', {'form' : user_form});
你们知道为什么这不起作用吗?

好的。。我自己解决了这个问题。。。 但谢谢你瓦西里带我去那里:)

结果我需要包括

fields = ('firstname','lastname','username','password') 

在UserForm类的Meta类中

您得到了哪些验证错误?在哪里可以看到它?我只能看到它把我带到了错误的一页。调试告诉我它没有通过验证,我忘记在模板中包含{{form.error}}。上面写着date_joined and last_login is Required。我唯一要注意的是,实际上您不需要
password
字段,因为您不想保存用户在数据库中输入的密码,您需要将其散列在那里(您可以通过
user.set_password(user.password)
)。因此,你应该从
字段中删除
密码
(但将其保留在表单中)。然后更改
用户。设置密码(user.password)
(这样做是完全错误的)为
用户。设置密码(user\u form.cleaned\u data['password')
我没有意识到这会存储实际的明文密码。。哇!非常感谢您的帮助:)我想这只是一小部分时间,所以这不是一个真正的安全漏洞,但肯定是数据库查询的低效使用。