簡體   English   中英

將數據從 JSON 導入 django AttributeError: 'WSGIRequest' 對象沒有屬性 'data'

[英]Importing Data from a JSON to django AttributeError: 'WSGIRequest' object has no attribute 'data'

我正在嘗試從教程系列 - Django 電子商務網站 | 制作電子商務網站 添加到購物車功能 | Django 框架中的第 3 部分

我的views.py是:

def updateItem(request):
    data = json.loads(request.data)
    productId = data['productId']
    action = data['action']

    print('productId: ', productId)
    print('action: ', action)
    return JsonResponse('Item was added', safe=False)

我的js文件是:

var updateBtns = document.getElementsByClassName('update-cart')
console.log('updateBtns length:', updateBtns.length);
for(var i=0; i<updateBtns.length; i++){
  updateBtns[i].addEventListener('click', function(){
    var productId = this.dataset.product
    var action = this.dataset.action
    console.log('product ID: ', productId, "Action: ", action)
    console.log('User: ', user)
    if (user == 'AnonymousUser'){
      console.log('user is not authnticated');
    }
    else{
      updateUserOrder(productId, action);
    }
  })
}
function updateUserOrder(productId, action){
  console.log('user is authenticatred, sending data')
  var url = '/update_item/'
  fetch(url,{
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-CSRFToken': csrftoken,
    },
    body: JSON.stringify({'productId': productId, 'action': action})
  })
  .then((response) =>{
    return response.json()
  })
  .then((data) =>{
    console.log('data: ', data)
  })
}

這里我的問題是在views.pyupdateItem函數中添加這些行后,控制台中顯示了錯誤-

data = json.loads(request.data)
AttributeError: 'WSGIRequest' object has no attribute 'data'

我怎么解決這個問題? 其實我不太清楚rest API或json。

做:

data = json.loads(request.body)

正如控制台中的建議: 'WSGIRequest' object has no attribute 'data' ,這是完全正確的。 但是,它有一個叫做body屬性

具體來說,在您的 js fetch您已將數據發送到request.body

    body: JSON.stringify({'productId': productId, 'action': action}) // Here

有關django_response_and_request 的更多信息

作為Biplove Lamichhane對此答案的修改:

 data = json.loads(request.body)

我需要做的是:

data = json.loads(request.body.decode("utf-8"))

當我從 UI 獲取字節時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM