使用Axios

时间:2019-04-08 10:55:44

标签: 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 dev tools

我尝试过的事情 我尝试应对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 个答案:

答案 0 :(得分:0)

基本上,我以错误的方式访问数据:

从此:

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'
  })