Flask与Django返回json数据的等价方法

aiparallelworld / 2024-10-05 / 原文

在 Django 中,要返回 JSON 数据,可以使用 JsonResponse 类,这与 Flask 中的 jsonify 功能相似。以下是如何将 Flask 中的 return jsonify(response_data) 改写为 Django 中的等价代码:
Flask 代码示例:

from flask import jsonify
@app.route('/some-route')
def some_view_function():
    response_data = {'key': 'value', 'another_key': 'another_value'}
    return jsonify(response_data)

对应的 Django 代码示例:

from django.http import JsonResponse
def some_view_function(request):
    response_data = {'key': 'value', 'another_key': 'another_value'}
    return JsonResponse(response_data)

在 Django 中,你需要确保 JsonResponse 的第一个参数是字典,它会被自动转换为 JSON 格式的响应。如果你需要在响应中设置特定的 HTTP 状态码,可以在 JsonResponse 中添加 status 参数,如下所示:

return JsonResponse(response_data, status=200)

此外,如果你需要发送一个空的 JSON 响应,可以这样写:

return JsonResponse({}, status=204)

或者,如果你想发送一个空的响应体,并且状态码是 204(No Content),你可以直接使用 Django 的 HttpResponse 类:

from django.http import HttpResponse
def some_view_function(request):
    return HttpResponse(status=204)

确保在你的 Django 视图中正确处理了请求,并且已经将视图函数绑定到了相应的 URL 路由。