我想在 React 前端自动显示来自 Django Rest Api 的每条错误消息。我想用注册身份验证功能测试我的概念,在修复它之后,我想在每个组件中使用这个概念来从 django API 中获取数据或将数据提取到 django API 中。
这是我的App.js注册用户只是为了测试:
import React, { useState } from "react";
export default function Signup() {
const [username, setUsername] = useState("");
const [email, setEmail] = useState("");
const [password1, setPassword1] = useState("");
const [password2, setPassword2] = useState("");
const [user, setUser] = useState("");
function handleEmail(evt) {
setEmail(evt.target.value);
}
function handleUsername(evt) {
setUsername(evt.target.value);
}
function handlePassword1(evt) {
setPassword1(evt.target.value);
}
function handlePassword2(evt) {
setPassword2(evt.target.value);
}
function handle_signup(evt) {
evt.preventDefault();
fetch("http://127.0.0.1:8000/api/v1/rest-auth/registration/", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ username, email, password1, password2 }),
})
.then((res) => res.json())
.then((json) => {
localStorage.setItem("token", json.key);
console.log(json);
setUser(json.username);
})
.catch((err) => {
if(err.res){
console.log(err.res.username)
console.log(err.res.email);
console.log(err.res.password1);
console.log(err.res.password2);
}else if(err.res){
console.log(err.res)
}else{
console.log('Error',err.message)
}
console.log(err.config);
});
}
return (
<form onSubmit={(evt) => handle_signup(evt, setUser())}>
<label htmlFor="register-username">Username:</label>
<input
type="text"
value={username}
onChange={handleUsername}
name="register-username"
id="register-username"
/>
<label htmlFor="register-email">Email:</label>
<input
type="text"
value={email}
onChange={handleEmail}
name="register-username"
id="register-username"
/>
<label htmlFor="register-password1">Password1:</label>
<input
type="password1"
value={password1}
onChange={handlePassword1}
name="register-password1"
id="register-password1"
/>
<label htmlFor="register-password2">password2:</label>
<input
type="password2"
value={password2}
onChange={handlePassword2}
name="register-password2"
id="register-password2"
/>
<input type="submit" value="Register" />
</form>
);
}
在 UseEffect 中,我尝试在用户名、电子邮件、密码 1、密码 2 的相关输入框下显示每条错误消息,我尝试通过 React-hook-form 来执行此操作,但这就像从前端插入错误消息一样。但我想显示来自后端的实际错误消息。在开发工具中,当我通过在输入框中输入错误信息来尝试使用上层代码时,它只会显示POST: 400 (bad request)
如何在每个输入框下显示此类错误消息,例如用户名存在或电子邮件地址无效,或者密码必须至少为 8 个,这在 Django Rest API 的典型错误消息中是典型的?
仅供参考:如果输入框正确填写,此代码可以注册任何用户。