访问request.data时请求错误

时间:2019-05-03 12:47:02

标签: javascript python ajax django django-rest-framework

我想通过Ajax将数据发送到我的Django服务器。但是,当我想读取这些数据时,会收到错误的请求错误。我不知道为什么,其他方法(例如request.method或request.stream)效果很好。

这是Ajax调用:

jQuery.ajax({
        type: 'post',
        url: 'http://127.0.0.1:8000/termin/get-journey-time/',
        contentType: 'application/json; charset=utf-8',
        data: {
            'method': 'get_journey_time',
            'mandant_id': 1,
            'customer_address': customer_address,
            'staff_group': staff_group_id
        },
        success: function (resultData) {
            console.log(resultData)
        });

这是我对此发布请求的看法:

class get_journey_time(generics.ListAPIView):
    """
    Handle Ajax Post to calculate the journey time to customer for the selected staff group
    """
    permission_classes = (AllowAny,)

    def post(self, request, *args, **kwargs):
        body = request.data
        return Response(body)

我收到错误代码400 Bad Request。你知道为什么吗?

def post(self, request, *args, **kwargs):
        body = request.method
        return Response(body)

def post(self, request, *args, **kwargs):
        body = request.stream
        return Response(body)

做得好

2 个答案:

答案 0 :(得分:1)

您正在获取HTTP 400,因为您的代码引发了异常。由于其他方法有效,因此它必须是body = request.data部分。阅读docs之后 我认为解析您发布的数据肯定有问题。就像,这里不需要序列化器吗?

答案 1 :(得分:0)

我发现了我的错误。

阅读django rest框架文档后,我发现我在post方法中调用了错误的参数。

def post(self, request, format=None):代替了def post(self, request, *args, **kwargs)为我工作。 谢谢,最好!