Я пытаюсь создать форму, которая редактирует данные профиля пользователя и использует метод исправления для изменения всех полей, кроме имени пользователя, потому что имя пользователя является первичным ключом и единственным идентификатором указанного c пользователя.
Обновление:
- Я изменил его на обычный метод PATCH, и данные не обновляются
- Я также убедился, что formData отправляет правильные данные, что он и делает
Из чтения предыдущих вопросов я узнал, что обычный ax ios .patch метод не работает с FormData и я следовал инструкциям добавления:
formData.append ("_ method", "PATCH")
и смены топора ios метод до ax ios .put , однако, я все еще получаю ошибку 400, которая в разделе данных гласит:
username: ["Это поле требуется. "]
Помощь будет высоко ценится. Спасибо, добрые незнакомцы!
Редактировать профиль Отправить:
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);
};
Топор ios Запрос
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);
});
};
Пользователь models.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)
Изображение профиля models.py
class Profile(models.Model):
image = models.ImageField(blank=False, null=False, upload_to=profile_path, default='f_profile.jpg')