【发布时间】:2023-03-19 09:23:01
【问题描述】:
我目前正在做一个小项目,只是为了练习和学习 Django。我决定首先从创建广义上的用户身份验证开始。我陷入了注册问题。我不知道我应该向 set_password 方法提供什么作为第一个位置参数,并保存方法。需要自我论证,当我尝试在那里输入 'request' 时,出现以下错误:
TypeError at /register/ super(type, obj): obj 必须是 type 的实例或子类型
这是我使用的注册视图:
def register(request):
if request.method == 'GET':
form = UserCreateForm()
return render(request, 'registration/register.html', {'form': form})
if request.method == 'POST':
form = UserCreateForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
username = cd['username']
email = cd['email']
password1 = cd['password1']
password2 = cd['password2']
user = User
user.username = username
user.email = email
if password1 == password2:
user.set_password(request, password1)
user.save(request)
# redirect to success page
else:
# return error
else:
# return error
这是我的表单代码:
class UserCreateForm(forms.Form):
email = forms.EmailField(required=True)
username = forms.CharField(required=True)
password1 = forms.CharField(max_length=32, widget=forms.PasswordInput)
password2 = forms.CharField(max_length=32, widget=forms.PasswordInput)
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2')
如果您能帮我解决这个问题,我将不胜感激,或者可以参考其他方式注册用户。
【问题讨论】: