Создание записи в DRF с использованием Axios

#vue.js #django-rest-framework #axios

#vue.js #django-rest-framework #axios

Вопрос:

Я пытаюсь сделать простой POST запрос, используя axios библиотеку внутри vuejs , но по какой-то причине DRF не получает параметры. Когда тот же запрос выполняется через Postman него, он получает параметры.

VueJS

 postLogin(credentials){
    return axios({
      method: "POST",
      url: "company/login/",
      data: credentials,
    }).catch(err => {
      return TreatErrors.treatDefaultError(err);
    })
  }
  

DRF

 @action(methods=['post'], detail=False)
    # Debug set here shows POST comes empty from vuejs
    def login(self, request, pk=None):
        if not request.POST.get('email'):
            raise ValidationError({
                'message': 'You must provide an email'
            })
  

Используя Chrome DevTools я могу четко видеть, что параметры отправляются в DRF

инструменты разработчика Chrome

Что я пробовал, я пытался справиться с каждым Headers из Postman них и вставить его, axios но безуспешно

 postLogin(credentials){
    return axios({
      method: "POST",
      url: "company/login/",
      data: credentials,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    }).catch(err => {
      return TreatErrors.treatDefaultError(err);
    })
  }
  

Ответ №1:

По сути, я неправильно обращался к данным:

Из этого:

 if not request.POST.get('email'):
 raise ValidationError({
   'message': 'You must provide an email'
 })
  

Для этого

 data = request.data

if not data.get('email'):
  raise ValidationError({
    'message': 'You must provide an email'
  })
  

Комментарии:

1. Большое вам спасибо за это! Благослови Бог! 🙂