在 Django Rest Framework 中使用自定义查询 return JSON

Using custom query to return JSON in Django Rest Framework

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

我可以创建一个视图或其他东西来进行自定义查询和 return JSON 吗?

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

不需要特殊的 JsonResponse 类型的 class。您可以在 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"
        }
    ]
}