Django - 从另一台服务器序列化响应

时间:2017-12-02 14:21:49

标签: python django django-rest-framework

我使用DRF向另一台服务器发出GET请求并将此响应返回给客户端。

我想知道的是,我如何才能从其他服务器的响应中获取选定的字段以返回给我的客户。

我所拥有的是这样的回应:

{
"plans": [
  {
"setup_fee": 500,
"amount": 990,
"code": "plano01",
}
{
"setup_fee:...
"code": "plano02",
}...

包含许多对象的数组。我想给客户这样的东西:

{
    "plans": [
      {
    "code": "plano01",
    }
    {"code": "plano02"...

代码字段。

使用Django / DRF最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

在这里使用DRF没什么意义。您正在以JSON格式获得响应,您只需将其解析为dict,提取所需的元素,然后再将其作为JSON返回; DRF会有点矫枉过正。视图可以简单地是:

def get_plan_codes(request):
    data = requests.get('external_api...').json()
    codes = [{'code': plan['code']} for plan in data['plans']]
    data['plans'] = codes
    return JsonResponse(data)

答案 1 :(得分:0)

我不认为我会亲自使用DRF,尽管你可以。

我认为这可以通过使用请求和django本身以相当直接的方式完成。

类似的东西:

from django.http import JsonResponse, HttpResponse

import json
import requests


def plans(request):
    response = requests.get("my url for the request")
    if response.status_code == 200:
        json_content = json.loads(response.content)
        # json_content is a python dictionary, so you can just postprocess the way you want it here
        return JsonResponse(json_content)
    else:
        return #You will want to return an HttpResponse with the appropriate status code, see the docs below on that
        # https://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.HttpResponse.status_code