我正在尝试创建一个简单的表单以添加用户。我使用内置表单生成UserCreationForm()。我找到了我用过的示例代码here。
这是我的观点:
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)
由于表单创建和验证基于相同的模型,我想知道这个错误来自哪里......
答案 0 :(得分:1)
您收到错误是因为create_user
需要password
中使用的名为password1
和 NOT UserCreationForm
的参数。
请注意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'),
)