DRF的特点
- 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM或者其他库自动序列化/反序列化;
- 提供了丰富的类视图 Mixin扩展类 简化视图的编写;
- 丰富的定制层级: 函数视图 类试图 视图集合到自动生成API, 满足各种需要。
- 多种身份认证和权限认证方式的支持
- 内置限流系统;
- 直观的 API web 界面
- 可扩展性
体验DRF
- 在settings.py中注册DRF
INSTALLED_APPS = [
...
#DRF应用
'rest_framework'
]
- 定义视图
from .models import BookInfo
from django.http import JsonResponse,HttpResponse
import json
from rest_framework.viewsets import ModelViewSet
from . import serializers
class BookInfoView(ModelViewSet):
'''定义类视图'''
# 指定查询集
queryset = BookInfo.objects.all()
# 指定序列化器
serializer_class = serializers.BookInfoSerializer
- 定义路由
from rest_framework.routers import DefaultRouter
from . import views
urlpatterns = [
# # 列表视图的路由
# url(r'^books/$', views.BookListView.as_view()),
# # 详情视图的路由
# url(r'^books/(?P<pk>\d+)/$',views.BookDetailView.as_view()),
]
router = DefaultRouter() #创建路由器
router.register(r'books', views.BookInfoView) #注册路由
urlpatterns += router.urls #把生成好的路由拼接到urlpatterns
- 序列化器 (在子应用中创建serializers.py文件)
from rest_framework import serializers
from .models import BookInfo
class BookInfoSerializer(serializers.ModelSerializer):
'''定义序列化器'''
class Meta:
model = BookInfo #指定序列化从那个模型映射字段
fields = '__all__' #映射哪些字段
谢谢观看~