猿创征文 | DjangoRESTframework(七)-五个扩展类的使用(Create、ListModel,Retrieve,Update,Destroy)

本文介绍了Django REST framework中用于处理增删改查操作的视图扩展类,如ListModelMixin用于列表视图,CreateModelMixin用于创建资源,RetrieveModelMixin用于获取单个模型实例,UpdateModelMixin用于更新和部分更新,以及DestroyModelMixin用于删除。这些扩展类简化了视图的实现,通过继承并结合GenericAPIView,可以快速构建功能完整的API视图。

Django REST framework(六)-视图之APIVIEW基本视图类,GenericAPIView通用视图类

五个视图扩展类:

rest_framework.mixins.*

作用:

1、提供了增删改查几种后端视图逻辑代码处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量。

2、这五个扩展类需要搭配GenericAPIView通用视图基类,因为五个扩展类的实现需要调用GenericAPIView提供的序列化器与数据库查询的方法。

下面代码用到的序列化器 

from rest_framework.serializers import ModelSerializer
from rest_framework import serializers
from book.models import BookInfo


class BookSerializer(ModelSerializer):
    commentcount = serializers.IntegerField(max_value=10000, min_value=0, default=0)
    readcount = serializers.IntegerField(max_value=10000, min_value=0, default=0)

    class Meta:
        model = BookInfo
        fields = '__all__'
        extra_kwargs = {
            'is_delete': {
                "write_only": True,
                "read_only": False
            },
            'id': {
                "write_only": True,
                "read_only": False,
                "required": False
            }
        }

下面代码所用到的模型类 

# 准备书籍列表信息的模型类
class BookInfo(models.Model):
    # 创建字段,字段类型...
    name = models.CharField(max_length=20, verbose_name='名称')
    pub_date = models.DateField(verbose_name='发布日期', null=True)
    readcount = models.IntegerField(default=0, verbose_name='阅读量')
    commentcount = models.IntegerField(default=0, verbose_name='评论量')
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'bookinfo'  # 指明数据库表名
        verbose_name = '图书'  # 在admin站点中显示的名称

    def __str__(self):
        """定义每个数据对象的显示信息"""
        return self.name

数据库数据 

insert into bookinfo(name, pub_date, readcount,commentcount, is_delete) values
('射雕英雄传', '1980-5-1', 12, 34, 0),
('天龙八部', '1986-7-24', 36, 40, 0),
('笑傲江湖', '1995-12-24', 20, 80, 0),
('雪山飞狐', '1987-11-11', 58, 24, 0);

一、ListModelMixin

rest_framework.mixins.ListModelMixin

1、源代码

作用:列表视图扩展类,提供list(request, *args, **kwargs)方法快速实现列表视图,返回200状态码。该Mixin的list方法会对数据进行过滤和分页。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值