Django中的自定义用户注册
不知何故,我正在努力寻找一种在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
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')
我没有意识到这会存储实际的明文密码。。哇!非常感谢您的帮助:)我想这只是一小部分时间,所以这不是一个真正的安全漏洞,但肯定是数据库查询的低效使用。