• 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的路由列表中

  • 相关阅读:
    jenkins一键部署搭建
    盘点近年来面试常见的spring面试真题
    kvm 创建win11虚拟机
    linux上安装kaldi
    Golang 规则引擎原理及实战
    行为型模式-策略模式和责任链模式对比
    OLAP与OLTP:数据处理系统的比较分析
    JavaScript数据结构【准备】
    2022 ICPC 杭州站
    路由器本地docker 下载node容器部署 thressjs文档
  • 原文地址:https://blog.csdn.net/weixin_38107457/article/details/126166702