django-models - 创建用户模型?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) 中的标签“数据”。这也不起作用。我哪里错了?
解决方案
通过打印到控制台并检查注册功能中的错误来解决
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>
解决了这个问题
推荐阅读
- c# - UWP 中的按钮单击
- c++ - 如何用函数求和矩阵?
- python - 在python中查找一个非常大的字符串的所有子字符串
- javascript - AWS S3:缺少凭证 (aws-sdk v3)
- macros - 如何使用 ImageJ 宏量化线条形状
- javascript - Storybook 获取 http 插件旋钮
- python - 如何抓取 youtube 视频上的评论数量?
- c - 使用三元运算符将 char 分配给 char 时如何通过转换避免(潜在)错误
- ruby-on-rails - Simple_form 嵌套资源:未定义的方法
- python - OpenCV 匹配模板仅在指定的位置网格上