Как отправить данные пользователя и изображение его профиля с помощью POST запроса из axios api в Django Rest Framework?
User Data
let final_data = {
'personal_data': {
'first_name': data.first_name,
'password': data.password,
'phone': data.phone,
'username': data.username,
'email': data.email,
'image': data.profile[0]
},
'address_data': {
"address_1": data.address_1,
"address_2": data.address_2,
"city": data.city,
"pin_code": data.pin_code,
"state": data.state,
"country": data.country
}
}
Выше приведены данные формы, которые я передал. Я также пытался передать эти данные с помощью json.stringify, но это не работает
AXIOS POST Request
import API from "../Axios/AxiosService"
const registerUser = (data) => API.post(`registration/`, data)
export default { registerUser }
HEADERS
if (config.url = 'registration/') {
requestOptions['headers'] = {'Content-Type': 'multipart/form-data;boundary=----WebKitFormBoundaryyrV7KO0BoCBuDbTL', 'Accept' : 'application/json'}
} else {
requestOptions['headers'] = {'Content-Type': 'application/json'}
}
if (localStorage.getItem("access_token")) {
requestOptions['headers'] = {"Authorization": "Token " + localStorage.getItem("access_token")}
}
Вышеприведенный код является AXIOS POST запросом и также переданными заголовками. Используя Application/Json я получаю все данные кроме изображения и из данных я также пытался передать data.profile вместо data.profile[0], но это не сработало.
**В методе POST в Django Rest Framework я использовал перечисленные ниже способы получения, но во всех методах я не получил никаких данных **
- request.POST
- request.data
- request.Files
Вы должны передать кверисет в UserRegistrationView, например;
class UserRegistrationView(generics.CreateAPIView):
queryset = User.objects.all()
serialier_class = UserSerializer
В React несмотря на передачу Content-type="multipart/form-data" в POST запрос, он не передает объект изображения в бэкенд.
Поэтому мы должны преобразовать все данные в formdata и затем передать в POST запрос.
Вот как я решил свою ошибку.