我正在尝试使用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
vue.js - 使用Axios进行POST到DRF-LMLPHP

我尝试过的
我尝试过应对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);
    })
  }

最佳答案

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

由此:

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

关于vue.js - 使用Axios进行POST到DRF,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55571827/

10-10 14:49