尝试注册时,Django中的IntegrityError位于/accounts/signup

2024-07-03 03:52:09 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的博客:http://gorani-dncvb.run.goorm.io/

我正试图为我的django博客建立一个注册页面

我完成了模板/视图/表单/url的代码编写,并成功连接到页面:http://gorani-dncvb.run.goorm.io/accounts/signup

所以我开始认为模板/url没有问题。但问题出现在尝试注册后,它说:

IntegrityError at /accounts/signup
UNIQUE constraint failed: auth_user.username

这是我的视图代码:

def signup(request):
    if request.method == "POST":
        form = SignupForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password')
            user = User.objects.create_user(username=username, password=raw_password)
        return redirect("post_list")
    else:
        form = SignupForm()
        return render(request, 'registration/signup.html', {'form':form})

这是表格代码:

class SignupForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('username','password',)

(我不是故意使用UserCreateForm的)

肯定没有重叠的另一个用户,所以为什么我看到这个错误消息


Tags: run代码ioformhttprequestusernamepassword
1条回答
网友
1楼 · 发布于 2024-07-03 03:52:09

复制用户的原因是django在保存表单时创建了用户。 当表单是ModelForm的子级时,保存它将创建与表单相关的模型类的新对象

只需删除或注释用于用户创建的代码行,即可正常工作:

def signup(request):
    if request.method == "POST":
        form = SignupForm(request.POST)
        if form.is_valid():
            user = form.save()
            user.set_password(user.password)
            user.save()
        return redirect("post_list")
    else:
        form = SignupForm()
        return render(request, 'registration/signup.html', {'form':form})

致以最良好的祝愿

相关问题 更多 >