首页 > 解决方案 > 创建用户模型?form.is_valid 总是返回 false

问题描述

尝试添加新用户(使用 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>

点击提交成功发送一个post请求到api/register,在urls.py中指向views.signup。

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

标签: django-modelsdjango-rest-framework

解决方案


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

        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>

解决了这个问题


推荐阅读