【问题标题】:Using custom query to return JSON in Django Rest Framework在 Django Rest Framework 中使用自定义查询返回 JSON
【发布时间】:2020-04-09 05:17:25
【问题描述】:

我开始使用 Django rest 并想知道:

我可以创建视图或其他东西来进行自定义查询并返回 JSON 吗?

【问题讨论】:

  • 是的,这正是 Django REST 框架实现的主要用例之一。
  • 即使是使用连接的复杂查询,分组依据?

标签: django django-rest-framework django-queryset django-rest-viewsets


【解决方案1】:

是的。只需执行您想要的任何查询,将数据转换为字典,然后使用标准响应返回。

不需要特殊的JsonResponse 类型的类。您可以在DEFAULT_RENDERER_CLASSES settings of DRF 中指定默认渲染器。

class MyView(views.APIView):
    def get(self, request):
        data = execute_to_dict(
             "SELECT a, b FROM x WHERE y = %s AND z = %s"
             ["yvalue", 73]
        )
        return Response({
            'count': len(data),
            'results': data
        })


def execute_to_dict(query, params=None):
    with connection.cursor() as c:
        c.execute(query, params or [])
        names = [col[0] for col in c.description]
        return [dict(list(zip(names, values))) for values in c.fetchall()]

这将输出如下内容:

{ 
    "count": 1, 
    "results": [
        { 
            "a": "value for a", 
            "b": "to be"
        }, 
        { 
            "a": "row 2!", 
            "b": "or not 2 be"
        }
    ]
}

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 2019-02-02
    • 2020-03-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多