Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试注册时,django中的IntegrityError位于/accounts/signup_Python_Django - Fatal编程技术网

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

Python 尝试注册时,django中的IntegrityError位于/accounts/signup,python,django,Python,Django,这是我的博客: 我正试图为我的django博客建立一个注册页面 我已完成模板/视图/表单/url的代码编写,并成功连接到以下页面: 所以我开始认为模板/url没有问题。但问题出现在尝试注册后,它说: IntegrityError at /accounts/signup UNIQUE constraint failed: auth_user.username 这是我的视图代码: def signup(request): if request.method == "POST":

这是我的博客:

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

我已完成模板/视图/表单/url的代码编写,并成功连接到以下页面:

所以我开始认为模板/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的)


肯定没有重叠的其他用户,所以我为什么会看到此错误消息?

复制用户的原因是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})

致以最诚挚的问候。

谢谢,我删除了你说的几行,现在没有出现上面提到的错误消息。但是在注册后-在以刚创建的ID登录后,它显示“用户名和密码不匹配”。但它是由django shell制作的另一个ID。你能帮我吗?谢谢。保存表单后,请尝试设置用户密码。我已经编辑了答案以反映这些变化。