Django REST framework(DRF)是什么?
Django REST framework(简称DRF)是一个强大且灵活的工具包,用于构建Web API。它是基于Django(一个高级Python Web框架)构建的,提供了许多用于构建API的组件和工具,使得开发过程更加快速和简便。
主要特点:
- 功能丰富:支持ORM(对象关系映射)和非ORM数据源,序列化,分页,过滤,视图等。
- 高度可扩展:可以根据需要自定义或扩展大部分组件。
- 认证与权限:内置多种认证方式(如TokenAuthentication、SessionAuthentication等),权限控制也非常灵活。
- 版本控制:支持API版本管理,方便不同版本的API共存。
- 文档自动生成:通过swagger、redoc等工具可以自动生成API文档。
- 社区支持:由于使用广泛,社区活跃,有很多第三方库和教程。
基本组件:
- 序列化器(Serializers):用于数据的序列化和反序列化。
- 视图(Views):包括基于类的视图和函数视图,用于处理HTTP请求。
- 路由(Routers):用于将视图与URL进行映射。
- 认证(Authentication):用于用户认证。
- 权限(Permissions):用于控制用户权限。
- 解析器(Parsers):用于解析HTTP请求中的数据。
- 渲染器(Renderers):用于渲染HTTP响应。
- 分页(Pagination):用于数据的分页显示。
使用场景:
- 快速构建Web API。
- 开发前后端分离的应用。
- 需要对API进行版本管理。
快速开始:
- 安装:
pip install djangorestframework
- 在Django项目的
settings.py
中添加rest_framework
到INSTALLED_APPS
。 - 根据需要定义模型(Models)和序列化器(Serializers)。
- 创建视图集(ViewSets)或视图(Views)。
- 使用路由器(Routers)将视图映射到URL。
示例代码:
python
# serializers.py
from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
# views.py
from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import MyModelViewSet
router = DefaultRouter()
router.register(r'mymodel', MyModelViewSet)
urlpatterns = [
path('', include(router.urls)),
]
这样,一个简单的API就创建好了,可以通过/mymodel/
访问。