Django REST framework

介绍

DRF框架是基于Django框架,对Django框架的封装,以提高开发效率和减少重复模块代码,并对一些功能进行了扩展,提高易用性。关于DRF官方文档讲述的非常全面

特点

  • 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;

  • 提供了丰富的类视图、Mixin扩展类,简化视图的编写;

  • 丰富的定制层级:函数视图、类视图、视图集、可自动生成 API;

  • 多种身份认证和权限认证方式的支持;

  • 内置了限流系统;

  • 直观的 API web 界面;

  • 可扩展性,插件丰富

搭建DRF项目

1、环境安装与配置

DRF需要以下依赖:

  • Python (2.7, 3.4, 3.5, 3.6, 3.7)

  • Django (1.11, 2.0, 2.1)

2、 安装DRF

pip install djangorestframework

3、添加rest_framework应用

创建Django工程后,在settings.pyINSTALLED_APPS中添加'rest_framework'。

INSTALLED_APPS = [
    ...
    'rest_framework',
]

使用DRF开发

1、创建实体类的序列化器

class BookSerializer(serializers.ModelSerializer):
    """图书数据序列化器"""
    class Meta:
        model = Book
        fields = '__all__'
  • model 指明该序列化器处理的数据字段从模型类Book参考生成

  • fields 指明该序列化器包含模型类中的哪些字段,'all'指明包含所有字段

2、编写视图

from rest_framework.viewsets import ModelViewSet
from .serializers import BookSerializer
from .models import Book

class BookViewSet(ModelViewSet):
    queryset = Book.objects.all()  # 指明该视图集在查询数据时使用的查询集
    serializer_class = BookSerializer # 该视图在进行序列化或反序列化时使用的序列化器

3、定义路由

from . import views
from rest_framework.routers import DefaultRouter

urlpatterns = [
    ...
]

router = DefaultRouter()  # 处理视图的路由器
router.register(r'books', views.BookViewSet)  # 向路由器中注册视图集

urlpatterns += router.urls  # 将路由器中的所以路由信息追到到django的路由列表中

4、运行

python manage.py runserver

创建数据库的表后

在浏览器中输入网址127.0.0.1:8000可看到页面显示