我正在尝试制作一个可编辑用户个人资料数据并使用patch方法更改除用户名以外的所有字段的表单,因为用户名是主键,并且仅是特定用户的标识符。
更新:
-我将其更改为常规的PATCH方法,并且数据未更新
-我还确保formData发送正确的数据,
通过阅读先前的问题,我了解到普通的 axios.patch 方法不适用于 FormData ,并且我已经按照添加的说明进行操作:>
formData.append(“ _ method”,“ PATCH”)
并将axios方法更改为 axios.put ,但是,我仍然在数据部分收到400错误,指出:
用户名:[“此字段为必填。”]
我们将不胜感激。谢谢,好心的陌生人!
编辑个人资料提交:
onSubmit = (e) => {
e.preventDefault();
const { firstName, lastName, profile } = this.state;
const username = localStorage.getItem("username");
formData.append("_method", "PATCH");
formData.append("firstName", firstName);
formData.append("lastName", lastName);
formData.append("profile_picture", profile);
this.props.onUpdate(formData, username);
};
Axios请求
export const userUpdate = (formData, username) => {
axios
.post(`http://127.0.0.1:8000/user/api/${username}`, {
formData,
headers: { "Content-Type": "application/x-www-form-urlencoded" },
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error.response);
});
};
用户模型。py
class User(models.Model):
firstName = models.CharField(max_length = 20, blank = True, default='Anonymous')
lastName = models.CharField(max_length = 25, blank = True, default='')
username = models.CharField(max_length = 50, unique=True, primary_key=True)
profile_picture = models.ForeignKey('upload.Profile', on_delete=models.CASCADE, null=True)
个人资料图片模型。py
class Profile(models.Model):
image = models.ImageField(blank=False, null=False, upload_to=profile_path, default='f_profile.jpg')
答案 0 :(得分:0)
如果您需要PATCH
请求,则应该使用patch
。
export const userUpdate = (formData, username) => {
axios
.patch(`http://127.0.0.1:8000/user/api/${username}`, {
formData,
headers: { "Content-Type": "application/x-www-form-urlencoded" },
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error.response);
});
};
此外,从表单中删除_method
。除非您有特定的观点来做点什么,否则您将不需要它。