第11天:API开发与REST framework
目标
使用Django REST framework构建RESTful API。
任务概览
- 学习序列化器的概念和使用方法。
- 创建API视图和路由。
- 实现API的权限和认证。
详细步骤
1. 学习序列化器
序列化器是Django REST framework中用于数据转换的组件,能够将模型实例转换为Python数据类型,也可以将传入的数据反序列化并保存为模型实例。
创建一个序列化器示例:
# myproject/myapp/serializers.pyfrom rest_framework import serializers
from .models import MyModelclass MyModelSerializer(serializers.ModelSerializer):class Meta:model = MyModelfields = '__all__' # 序列化模型的所有字段
2. 创建API视图
Django REST framework提供了多种视图集和视图类来简化API的创建。
- 视图集:例如
ListCreateAPIView
、RetrieveUpdateDestroyAPIView
等,用于处理CRUD操作。
# myproject/myapp/views.pyfrom rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializerclass MyModelViewSet(viewsets.ModelViewSet):queryset = MyModel.objects.all()serializer_class = MyModelSerializer
- 路由:使用
routers
模块来自动创建路由。
# myproject/myapp/urls.pyfrom django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import MyModelViewSetrouter = DefaultRouter()
router.register(r'mymodels', MyModelViewSet)urlpatterns = [path('', include(router.urls)),
]
3. 实现API的权限和认证
Django REST framework提供了多种认证和权限类来控制API的访问。
- 认证:例如
TokenAuthentication
、SessionAuthentication
等。
在settings.py
中添加认证类:
REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework.authentication.TokenAuthentication',],
}
- 权限:例如
IsAuthenticated
、IsAdminUser
、IsAuthenticatedOrReadOnly
等。
在视图中设置权限类:
class MyModelViewSet(viewsets.ModelViewSet):queryset = MyModel.objects.all()serializer_class = MyModelSerializerpermission_classes = [permissions.IsAuthenticatedOrReadOnly]
学习要点
- 理解序列化器的概念和使用方法。
- 学会创建API视图和路由。
- 掌握实现API的权限和认证。
每日回顾
- 确保序列化器能够正确序列化和反序列化数据。
- 测试API视图是否按预期工作。
- 验证权限和认证是否正常。
通过今天的学习,你应该能够使用Django REST framework构建RESTful API,并了解序列化器、视图、路由、权限和认证的使用方法。明天,我们将学习如何过滤和分页API数据,以及如何自定义API的响应格式,进一步提升API的可用性和灵活性。