【问题标题】:Django keyerror from built in form来自内置表单的 Django keyerror
【发布时间】:2013-08-19 11:57:24
【问题描述】:

我正在尝试创建一个简单的表单来添加用户。我使用内置的表单生成 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) 

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

【问题讨论】:

    标签: django forms keyerror


    【解决方案1】:

    您收到错误是因为 create_user 需要一个名为 password 的参数,而 NOT 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'),
    )
    

    【讨论】:

    • 谢谢德里克。我认为一切都会(神奇地)结合在一起:)但是这几个额外的步骤无论如何都没有问题......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多