0

我正在尝试创建一个简单的表单以添加用户。我使用内置的表单生成 UserCreationForm()。我在这里找到了我使用的示例代码。

这是我的看法:

def user_add(request):
    if request.method == "POST":
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = User.objects.create_user(**form.cleaned_data)
            login(new_user)
            return HttpResponseRedirect('main.html')
    else:
        form = UserCreationForm() 

    return render(request, 'main/user_add_djDefault.html', {'form': form.as_p()})

表单已正确生成,但是当我输入数据并提交时:

Exception Type: TypeError
Exception Value: 'password1' is an invalid keyword argument for this function

错误发生在这里:

new_user = User.objects.create_user(form.cleaned_data) 

由于表单创建和验证基于相同的模型,我想知道这个错误来自哪里......

4

1 回答 1

1

您收到错误是因为create_user需要一个名为password不是 password1UserCreationForm.

注意签名create_user

create_user(self, username, email=None, password=None, **extra_fields)

您可以尝试调用这样的方法:

cd = form.cleaned_data
User.objects.create_user(
    username=cd.get('username'),
    password=cd.get('password1'),
)
于 2013-08-19T12:02:24.233 回答