我正在使用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)
我正在使用POSTMAN客户端发送POST请求,其中form-data
key
为colour
且value
为red
。它工作得很好,我得到了预期的结果。这就是print 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"];
我可以做些什么来完成这项工作?
答案 0 :(得分:1)
使用POSTMAN,您将发送表单数据,而使用iOS,您可以发送json数据。
这就是为什么它的解析方式不同。
您需要在POSTMAN上设置Content-Type: application/json
标头并发送原始数据:
{“color”:“black”}
通过这种方式,您将获得相同的dict格式。