Django JsonResponse
最后修改于 2023 年 1 月 9 日
Django JsonResponse 教程展示了如何在 Django 中使用 JsonResponse 发送 JSON 数据。
Django
Django 是一个高级 Python Web 框架。它鼓励快速开发和清晰、实用的设计。Django 的主要目标是简化复杂、数据库驱动的网站的创建。
Django 由 Django Software Foundation 维护。
JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 的官方互联网媒体类型是 application/json。JSON 文件扩展名是 .json。它易于人类阅读和编写,也易于机器解析和生成。
Django JsonResponse
JsonResponse 是一个 HttpResponse 的子类,有助于创建 JSON 编码的响应。其默认的 Content-Type 标头设置为 application/json。第一个参数 data 应该是一个 dict 实例。如果 safe 参数设置为 False,则可以传递任何对象进行序列化;否则,只允许 dict 实例。
Django JsonResponse 示例
在下面的示例中,我们创建了一个 Django 应用程序,该应用程序向客户端发送一个文件。该文件是一个 JPEG 图像,位于项目根目录的 images 目录下。
$ mkdir jsonresponse $ cd jsonresponse $ mkdir src $ cd src
我们创建项目和 src 目录。然后我们进入 src 目录。
$ django-admin startproject jsonresponse .
我们在 src 目录中创建一个新的 Django 项目。
注意:如果提供了可选的目标目录,Django 将使用该现有目录作为项目目录。如果省略,Django 将根据项目名称创建一个新目录。我们使用点(.)在当前工作目录中创建一个项目。
$ cd .. $ pwd /c/Users/Jano/Documents/pyprogs/django/jsonresponse
我们进入项目目录。
$ tree /f
src
│ manage.py
│
└───jsonresponse
settings.py
urls.py
views.py
wsgi.py
__init__.py
这是项目目录的内容。
注意:Django 的方式是将功能放入应用程序中,而应用程序是使用 django-admin startapp 创建的。在本教程中,我们不使用应用程序以简化示例。我们专注于演示如何发送 JSON 响应。
from django.contrib import admin
from django.urls import path
from .views import send_json
urlpatterns = [
path('admin/', admin.site.urls),
path('sendjson/', send_json, name='send_json'),
]
我们添加了一个新的路由页面;它调用 views.py 模块中的 send_json 函数。
from django.http import JsonResponse
def send_json(request):
data = [{'name': 'Peter', 'email': 'peter@example.org'},
{'name': 'Julia', 'email': 'julia@example.org'}]
return JsonResponse(data, safe=False)
在 send_json 中,我们定义了一个字典列表。因为这是一个列表,所以我们将 safe 设置为 False。如果我们不设置此参数,我们将收到一个 TypeError,消息如下:
In order to allow non-dict objects to be serialized set the safe parameter to False.
默认情况下,JsonResponse 只接受 Python 字典。
$ python manage.py runserver
我们运行服务器并导航到 http://127.0.0.1:8000/sendjson/。
$ curl localhost:8000/sendjson/
[{"name": "Peter", "email": "peter@example.org"},
{"name": "Julia", "email": "julia@example.org"}]
我们使用 curl 工具发出 GET 请求。
在本文中,我们演示了如何在 Django 中发送 JSON 数据。