创建用户模型? form.is_valid总是返回false

时间:2019-03-24 19:57:28

标签: django-models django-rest-framework

尝试添加新用户(使用Django默认用户模型)。

#api/views.py
@csrf_exempt
@api_view(['GET', 'POST', ])
def signup(request):
    print(request.POST)
    if request.method == 'POST':
        form = UserCreationForm(data=request.POST)
        if form.is_valid():
            form.save()
            return Response('created new user')
        else:
            return Response('did not')

这是表格。我没有使用原始的html,它是一个React组件

        <form className="register-form" noValidate action="api/register/"
            method="post" autoComplete="off">
                <input type="text" name="username"></input>
                <input type="password" name="password"></input>
                <input type="submit" value="Submit"></input>
        </form>

点击提交成功后,会将发布请求发送到api / register,该请求在urls.py中将其指向views.signup。

form.is_valid总是评估为false,因此不会创建User。据我所知,创建用户所需的唯一字段是用户名和密码。我也尝试过删除UserCreationForm(data = request.POST)中的标签“ data”。这也不起作用。我要去哪里错了?

1 个答案:

答案 0 :(得分:0)

通过打印到控制台并检查注册功能中的错误来解决

        print(request.POST)
        print(form.errors)
        print(form.non_field_errors)

用户模型实际上需要用户名,密码1和密码2。已将表单更改为

<form className="register-form" noValidate action="api/register/"
            method="post" autoComplete="off">
                <input type="text" name="username"></input>
                <input type="password" name="password1"></input>
                <input type="password" name="password2"></input>
                <input type="submit" value="Submit"></input>
        </form>

解决了这个问题