使用Django和Django REST Framework (DRF) 创建基本的CRUD API || 管理书籍列表的简单API。

💡 原文英文,约1200词,阅读约需5分钟。
📝

内容提要

这篇文章介绍了如何使用Django和Django REST Framework(DRF)创建一个简单的CRUD API来管理书籍列表。文章提供了一个逐步指南,包括设置Django项目、配置项目、定义模型、创建序列化器、定义视图和配置URL。最后,文章还列举了一些常见错误和解决方案。

🔎

延伸解读

模型设计中的关键约束

文章中的Book模型为isbn字段设置了unique=True,这意味着数据库层面会强制保证ISBN的唯一性。如果尝试插入重复的ISBN,将触发IntegrityError。此外,published_date使用DateField,要求输入符合日期格式;cover字段允许为空,但需提供URL。这些约束在序列化器中会自动进行验证,确保API接收的数据符合模型定义。

序列化器与视图集的协作

BookSerializer继承自ModelSerializer,并设置fields = '__all__',这表示序列化器将包含模型的所有字段。在BookViewSet中,通过queryset和serializer_class属性,DRF自动提供了列表、详情、创建、更新和删除操作。这种组合减少了重复代码,但需注意:如果模型字段发生变化,序列化器会自动反映,无需手动更新字段列表。

URL路由的自动化配置

使用DRF的DefaultRouter可以自动为ViewSet生成URL模式。在books/urls.py中,router.register(r'books', BookViewSet)会生成如/api/books/和/api/books/{id}/等端点。然后在项目级urls.py中通过include()包含这些路由,并添加api/前缀。最终API可通过http://localhost:8000/api/books/访问。这种自动化路由简化了URL配置,但需确保在INSTALLED_APPS中注册了rest_fr

常见错误的预防与解决

文章列举了开发中可能遇到的错误,如ModuleNotFoundError、ImportError、AssertionError、IntegrityError和ProgrammingError。这些错误通常源于配置遗漏或数据违规。例如,忘记将应用加入INSTALLED_APPS会导致ModuleNotFoundError;未定义serializer_class会触发AssertionError;而数据库表不存在则需运行迁移命令。理解这些错误的成因有助于快速调试。

❓

Q&A

如何使用Django和DRF创建CRUD API?

首先,设置Django项目并安装Django和Django REST Framework。然后定义模型、创建序列化器、定义视图和配置URLs,最后启动开发服务器。

CRUD API中的HTTP方法分别是什么?

CRUD API使用POST创建、GET读取、PUT/PATCH更新和DELETE删除资源。

在Django中如何定义模型?

在books/models.py中定义Book模型,使用Django的模型类来设计数据输入格式。

如何测试创建的API?

可以使用Postman或curl测试API,或者在浏览器中访问API的URL。

常见的错误有哪些及其解决方案?

常见错误包括ModuleNotFoundError、ImportError和IntegrityError等,解决方案通常涉及检查INSTALLED_APPS、安装缺失的包或确保数据唯一性。

如何配置Django项目以使用DRF?

在settings.py中,将'rest_framework'和你的应用添加到INSTALLED_APPS中。

🏷️

标签

➡️

继续阅读