• Django REST framework 简介


    1. 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。
    2. 在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删、改、查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的:
      • :校验请求数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回
      • :判断要删除的数据是否存在 -> 执行数据库删除
      • :判断要修改的数据是否存在 -> 校验请求的数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回
      • :查询数据库 -> 将数据序列化并返回

     环境安装与配置

    1. 安装DRF

    pip install djangorestframework

     2. 添加rest_framework应用

    我们利用在Django框架学习中创建的demo工程,在settings.pyINSTALLED_APPS中添加'rest_framework'。

    1. INSTALLED_APPS = [
    2. ...
    3. 'rest_framework',
    4. ]

     1. 创建序列化器

    在booktest应用中新建serializers.py用于保存该应用的序列化器。

    创建一个BookInfoSerializer用于序列化与反序列化。

    1. # -*- coding: utf-8 -*-
    2. # 创建序列化器
    3. from rest_framework import serializers
    4. from sixstart.models import BookInfo
    5. class BookInfoSerializer(serializers.ModelSerializer):
    6. # 图书的数据序列化器
    7. class Meta:
    8. model = BookInfo
    9. fields = "__all__"
    10. # fields = ('id','btitle')

    在booktest应用中新建serializers.py用于保存该应用的序列化器。

    创建一个BookInfoSerializer用于序列化与反序列化。

    2. 编写视图

    1. from rest_framework.viewsets import ModelViewSet
    2. from .serializers import BookInfoSerializer
    3. from .models import BookInfo
    4. class BookInfoViewSet(ModelViewSet):
    5. queryset = BookInfo.objects.all()
    6. serializer_class = BookInfoSerializer
    • queryset 指明该视图集在查询数据时使用的查询集
    • serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器

    3. 定义路由

    在booktest应用的urls.py中定义路由信息。

    1. from . import views
    2. from rest_framework.routers import DefaultRouter
    3. urlpatterns = [
    4. ...
    5. ]
    6. router = DefaultRouter() # 可以处理视图的路由器
    7. router.register(r'books', views.BookInfoViewSet) # 向路由器中注册视图集
    8. urlpatterns += router.urls # 将路由器中的所以路由信息追到到django的路由列表中

  • 相关阅读:
    springboot整合websocket开箱即用
    RocketMQ快速入门_2. rocketmq 的应用场景、与其他mq的差异
    java计算机毕业设计基于springboo+vue的学生活动组织管理系统
    G1D26-DP presentation&NLP相关
    SpringFramework:循环依赖与三级缓存
    【9-2:代码规范】
    【frontend】chrome devtools flex debugger
    MAX3072EESA+T RS-485/RS-422半双工收发器
    php获取今天凌晨零点的时间
    poll epoll初学习
  • 原文地址:https://blog.csdn.net/weixin_38107457/article/details/126166702