0

我正在使用 Django REST 框架。

@api_view(['POST'])
def image_params(request, format=None):
    if request.method == 'POST':
        print request.DATA
        size = request.POST.get('size')
        colour = request.POST.get('colour')
        get_clothes = Clothes.objects.filter( Q(clothescolour=colour) | Q(clothessize=size))
        serializer = ClothesSerializer(get_clothes, many=True)
        result = serializer.data
        print result
    return Response(result,status=status.HTTP_201_CREATED)

我正在使用is和is中form-data的POSTMAN 客户端发送 POST 请求。它工作得很好,我得到了预期的结果。这看起来像:keycolourvalueredprint request.DATA

<QueryDict: {u'colour': [u'red']}>

当我从 iOS 发送实际请求时,print request.DATA如图所示,我的过滤器查询失败。

{u'colour': u'red'}

这是我在 iOS 中构造 HTTP Post 请求的方式:

NSDictionary* requestData = [NSDictionary dictionaryWithObjectsAndKeys:
                             @"red",
                             @"colour",
                             nil];

NSError *postError;
NSData *postData = [NSJSONSerialization dataWithJSONObject:requestData options:NSJSONWritingPrettyPrinted error:&postError];
[postRequest setHTTPMethod:@"POST"];
[postRequest setHTTPBody:postData];
[postRequest setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"];

我能做些什么来完成这项工作?

4

1 回答 1

1

使用 POSTMAN 发送表单数据,使用 iOS 发送 json 数据。这就是为什么它的解析方式不同。您需要Content-Type: application/json在 POSTMAN 上设置标题并发送原始数据:

{“颜色:黑色”}

这样,您将在两者上获得相同的 dict 格式。

于 2013-09-17T08:50:24.060 回答