DRF 简介与快速入门
DRF 简介
Django REST Framework (DRF) 是一个强大而灵活的工具包,用于使用 Django 构建 Web API。它通过提供序列化、身份验证和视图集等开箱即用的功能,简化了创建 RESTful API 的过程。DRF 与 Django 的核心功能(如模型、视图和 URL)无缝集成,使其成为开发人员的热门选择。
为什么选择 DRF?
- 易于使用: DRF 提供了直观的 API 和丰富的文档,让开发人员可以快速上手。
- 功能强大: 它包含了构建功能齐全的 Web API 所需的一切,包括序列化、请求解析、身份验证、权限、限流、视图集和路由器等。
- 高度可定制: DRF 的每个组件都可以根据项目需求进行定制和扩展。
- 社区支持: 作为一个成熟的开源项目,DRF 拥有庞大而活跃的社区,提供持续的支持和更新。
- 浏览器友好的 API: DRF 提供了出色的可浏览 API,使得开发和测试 API 变得更加便捷。
DRF 的核心特性
- 序列化器 (Serializers): 负责将复杂的 Django 模型实例转换为 Python 原生数据类型,然后可以轻松地渲染为 JSON、XML 等格式,以及将传入的数据反序列化回模型实例。
- 视图 (Views): DRF 提供了多种视图类型,包括基于函数的 APIView、基于类的 GenericAPIView 和 ViewSet,用于处理 API 请求并返回响应。
- 认证 (Authentication): 支持多种认证方案,如 SessionAuthentication、TokenAuthentication、BasicAuthentication 等。
- 权限 (Permissions): 允许你控制用户对 API 端点的访问级别。
- 限流 (Throttling): 用于控制客户端在给定时间段内可以发出的请求数量。
- 路由器 (Routers): 自动处理 ViewSet 的 URL 路由,大大简化了 URL 配置。
DRF 快速入门
本快速入门指南将引导你构建一个简单的 DRF API。
先决条件
在开始之前,请确保你已安装 Python 3.x 和 Django。如果尚未安装,可以使用 pip 进行安装:
bash
pip install django
1. 项目设置
首先,创建一个新的 Django 项目并在其中创建一个新的应用程序。
bash
django-admin startproject tutorial
cd tutorial
python manage.py startapp quickstart
2. 安装 Django REST Framework
使用 pip 安装 DRF:
bash
pip install djangorestframework
3. 配置 settings.py
打开 tutorial/settings.py 文件,并将 'rest_framework' 和你的新应用程序 'quickstart' 添加到 INSTALLED_APPS 中。
“`python
tutorial/settings.py
INSTALLED_APPS = [
# …
‘rest_framework’,
‘quickstart’,
]
“`
4. 定义模型 (Models)
在 quickstart/models.py 中,定义一个简单的模型。例如,我们创建一个 Task 模型。
“`python
quickstart/models.py
from django.db import models
class Task(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
completed = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
“`
5. 创建序列化器 (Serializers)
序列化器将复杂的数据类型(如 Django 模型)转换为可以轻松渲染为 JSON 或 XML 的 Python 原生数据类型。创建新文件 quickstart/serializers.py 并为你的 Task 模型定义一个序列化器。
“`python
quickstart/serializers.py
from rest_framework import serializers
from .models import Task
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = [‘id’, ‘title’, ‘description’, ‘completed’, ‘created_at’]
“`
6. 创建视图 (Views)
DRF 提供了通用视图和视图集来简化 API 开发。视图集允许你将相关的视图组合到一个类中,提供 .list() 和 .create() 等操作。在 quickstart/views.py 中,为你的 Task 模型创建一个 ViewSet。
“`python
quickstart/views.py
from rest_framework import viewsets
from .models import Task
from .serializers import TaskSerializer
class TaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all()
serializer_class = TaskSerializer
“`
7. 配置 URL
你需要为你的 API 端点设置 URL。DRF 的路由器会自动处理 ViewSet 的 URL 配置。
首先,在 tutorial/urls.py(你的项目 urls.py)中,包含 DRF 路由器。
“`python
tutorial/urls.py
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from quickstart import views
router = routers.DefaultRouter()
router.register(r’tasks’, views.TaskViewSet)
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘api/’, include(router.urls)),
path(‘api-auth/’, include(‘rest_framework.urls’, namespace=’rest_framework’)) # For browsable API login/logout
]
“`
8. 数据库迁移
应用迁移以在数据库中创建 Task 表。
bash
python manage.py makemigrations
python manage.py migrate
9. 创建超级用户 (可选但推荐)
创建一个超级用户以访问 Django 管理面板和可浏览的 API。
bash
python manage.py createsuperuser
按照提示创建你的超级用户。
10. 运行开发服务器
启动 Django 开发服务器:
bash
python manage.py runserver
11. 测试 API
你现在可以在 Web 浏览器或使用 curl 等工具访问你的 API。
打开浏览器并导航到 http://127.0.0.1:8000/api/tasks/。你将看到 DRF 可浏览的 API,允许你查看、创建、更新和删除任务。如果你使用右上角的控件登录(使用你创建的超级用户凭据),你将能够与 API 进行交互。