什么是 API
本课属于 Coddy Django 学习旅程的“JSON API”单元。第 1 课,共 19 课。
到目前为止,你编写的视图会返回供人阅读的页面。API(应用程序编程接口)会为程序返回数据。手机应用、脚本或页面中的 JavaScript 会请求一个 URL,并获取数据,而不是 HTML。
这些数据通常是 JSON,一种看起来像 Python 字典和列表的文本,其中使用双引号,并在 Python 使用 True、False 和 None 的地方使用 true、false 和 null:
{"title": "Buy milk", "done": false, "due": null}Django 使用 JsonResponse 将字典转换为 JSON 响应:
from django.http import JsonResponse
def hello(request):
return JsonResponse({"message": "Hi", "ready": True})它会写入 JSON,并将 Content-Type 标头设置为 application/json。标头是随响应发送的一行信息;这个标头会告诉程序它收到的是什么类型的数据。
挑战
简单为任务跟踪器添加第一个端点,这是一个返回数字而不是页面的 URL。
- 在
tasks/views.py中,从django.http导入JsonResponse,并添加一个视图stats,让它返回 JSON:total表示任务总数,done表示已完成的任务数。 - 在
tasks/urls.py中,添加路由"api/stats/",并将其命名为stats。
点击“运行”:预览会打开 /api/stats/ 并显示 {"total": 3, "done": 1}。
亲手试试
from django.shortcuts import render
from .models import Task
def home(request):
return render(request, "tasks/home.html", {"tasks": Task.objects.all()})
JSON API中的所有课
自己练习: Django 在线编辑器