Django Rest request.data对象为空

时间:2016-05-11 11:38:51

标签: python ajax django django-rest-framework

我无法从ajax请求中获取数据。我可以通过Djangos的request.GET(以及其他POST,DELETE等标题)访问数据,但不能访问REST request.data(或request.body)返回一个空的字典。 我的ajax电话:

function getMeal(event)
{
  var tmp       = event._id.split("_")
  var database  = tmp[0]
  var mealId    = tmp[1]
  $.ajax(
  {
    type: "GET",
      url: "{% url 'updateEatenMealAjax' %}",
      data:
      {
          'database': database,
          'mealId'  : mealId,

      },
      success: function(data, textStatus, jqXHR)
      {
        $('#update_EatenMeal_FormBody').html(data);
      },
      dataType : 'html',
      async: 'false',
      contentType: 'application/json'

    });
}

我的django观点:

@login_required
@api_view(["PUT", "GET", "DELETE"])
@csrf_protect
@ensure_csrf_cookie
def updateEatenMealAjax(request):

    args = {}
    eaten_object = None
    # WHICH DATABASE DOES THIS FOOD ITEM BELONG TO
    database = request.data.get('database')
    mealId  = request.data.get('mealId')    

1 个答案:

答案 0 :(得分:1)

来自Django-REST-framework documentation

  

request.data 返回请求正文的已解析内容。这类似于标准request.POSTrequest.FILES属性

     

request.query_params request.GET更正确命名的同义词。   为清楚起见,我们建议使用request.query_params代替Django的标准request.GET。这样做有助于保持代码库更加正确和明显 - 任何HTTP方法类型都可能包含查询参数,而不仅仅是GET请求。

只要您通过query parameters将数据传递到您的观看次数,无论您使用的是哪个动词(无论是GETPOST还是其他任何动词),它们都可以在您的request.query_params代替request.data