“`text
Okay, I can help you write an article about “新手必备:Django REST Framework快速入门” (Beginner’s Guide: Django REST Framework Quick Start).
Here’s the plan:
1. Structure the Article: I will outline the key sections for a comprehensive beginner’s guide to DRF.
2. Generate Content: I will write detailed content for each section, explaining concepts and providing code examples where appropriate.
3. Format as Markdown: The article will be formatted using Markdown for readability.
4. Create File: I will save the article to a new Markdown file.
“`
新手必备:Django REST Framework快速入门
引言
在现代Web开发中,构建健壮且可扩展的API至关重要。Django,作为Python领域最流行的Web框架之一,以其“开箱即用”的特性和完善的生态系统赢得了众多开发者的青睐。然而,Django本身在处理RESTful API方面提供的是基础功能。为了更高效、更优雅地构建API,Django REST Framework(DRF)应运而生。
Django REST Framework是一个强大且灵活的工具包,用于构建Web API。它建立在Django之上,极大地简化了API的开发过程,提供了认证、权限、序列化、视图集、路由器等一系列实用功能,让开发者能够专注于业务逻辑而不是繁琐的API细节。
本文将带领你从零开始,快速掌握Django REST Framework的基础知识,并构建一个简单的RESTful API。
1. 环境准备
在开始之前,请确保你的系统已安装Python和pip。我们首先创建一个新的Django项目和应用。
“`bash
创建并激活虚拟环境 (推荐)
python -m venv venv
Windows
.\venv\Scripts\activate
macOS/Linux
source venv/bin/activate
安装Django
pip install Django
创建Django项目
django-admin startproject myproject .
创建Django应用
python manage.py startapp myapp
“`
现在,编辑 myproject/settings.py,将 myapp 添加到 INSTALLED_APPS 中:
“`python
myproject/settings.py
INSTALLED_APPS = [
# … 其他应用
‘myapp’,
]
“`
2. 安装Django REST Framework
接下来,安装DRF并将其添加到你的Django项目中。
bash
pip install djangorestframework
然后,在 myproject/settings.py 的 INSTALLED_APPS 中添加 'rest_framework':
“`python
myproject/settings.py
INSTALLED_APPS = [
# … 其他应用
‘myapp’,
‘rest_framework’, # 添加这一行
]
“`
3. 创建第一个API
我们将创建一个简单的API,用于管理“图书”资源。
3.1 定义模型 (Model)
在 myapp/models.py 中定义一个 Book 模型:
“`python
myapp/models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
publication_date = models.DateField()
isbn = models.CharField(max_length=13, unique=True)
def __str__(self):
return self.title
“`
运行数据库迁移:
bash
python manage.py makemigrations myapp
python manage.py migrate
3.2 创建序列化器 (Serializer)
序列化器是DRF的核心概念之一。它负责将复杂的QuerySet和模型实例转换为Python原生数据类型,以便于渲染为JSON、XML或其他内容类型。同时,它也负责反序列化,将接收到的数据验证后恢复成模型实例。
在 myapp 目录下创建 serializers.py 文件:
“`python
myapp/serializers.py
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = [‘id’, ‘title’, ‘author’, ‘publication_date’, ‘isbn’]
# 或者使用 ‘all‘ 来包含所有字段
# fields = ‘all‘
“`
ModelSerializer 提供了一种简单的方式来自动创建与Django模型对应的序列化器。
3.3 创建视图集 (Viewset)
DRF提供了视图集(Viewsets)的概念,它将处理一个模型的所有CRUD(创建、读取、更新、删除)操作的逻辑封装在一个类中。
在 myapp/views.py 中创建 BookViewSet:
“`python
myapp/views.py
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
“`
ModelViewSet 提供了 list (获取所有), retrieve (获取单个), create (创建), update (更新), partial_update (部分更新), destroy (删除) 等操作,无需编写额外代码。
3.4 定义URL路由 (URL Routing)
DRF的路由器(Routers)可以自动为视图集生成URL配置,大大简化了URL的定义。
在 myapp 目录下创建 urls.py 文件:
“`python
myapp/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register(r’books’, BookViewSet)
urlpatterns = [
path(”, include(router.urls)),
]
“`
最后,在项目级别的 myproject/urls.py 中包含 myapp 的URL配置:
“`python
myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘api/’, include(‘myapp.urls’)), # 添加这一行
]
“`
4. 测试API
现在,你可以启动Django开发服务器并测试你的API了。
bash
python manage.py runserver
打开浏览器,访问 http://127.0.0.1:8000/api/books/。你会看到一个漂亮的可浏览API界面,这是DRF的一大特色。
你可以通过这个界面进行:
- GET 请求:获取图书列表。
- POST 请求:创建一本新书。
- 访问
http://127.0.0.1:8000/api/books/1/(假设图书ID为1):获取、更新或删除单本书籍。
你也可以使用Postman、Insomnia等工具或命令行工具(如curl)来发送请求。
示例:创建一本书 (POST请求)
向 http://127.0.0.1:8000/api/books/ 发送POST请求,请求体为JSON:
json
{
"title": "Django REST Framework Handbook",
"author": "John Doe",
"publication_date": "2023-01-01",
"isbn": "9781234567890"
}
5. 高级特性概览
DRF远不止于此,它还提供了许多高级功能来帮助你构建更复杂的API:
- 认证 (Authentication):支持Session认证、Token认证、OAuth2等多种认证方式。
- 权限 (Permissions):控制用户对API资源的访问权限(例如,只有管理员才能删除图书)。
- 过滤 (Filtering):允许客户端通过URL参数过滤结果集。
- 分页 (Pagination):处理大量数据时,将结果分批返回。
- 限流 (Throttling):限制客户端在一定时间内可以发出的请求数量。
- Parsers 和 Renderers:处理不同数据格式的请求和响应(如JSON, XML)。
- Hyperlinked APIs:使API更具可发现性,资源之间通过超链接关联。
总结
通过本文,你已经成功地搭建了一个基于Django REST Framework的简单API。我们了解了DRF的核心组件:模型、序列化器、视图集和路由器,并实践了如何将它们结合起来构建一个可用的API。
Django REST Framework极大地提高了API开发的效率和体验,是Django开发者构建RESTful API的利器。接下来,你可以深入学习DRF的各种高级功能,结合实际项目需求,构建功能更强大、更安全的API。祝你开发愉快!