Django REST framework 学习笔记(三)

本文介绍了如何在Django REST framework中利用mixins和generics来创建API视图,强调了基于类的API视图在代码复用方面的优势。通过使用`ListCreateAPIView`, `RetrieveUpdateDestroyAPIView`等类,简洁地实现了增删查改操作,减少了代码量,提高了效率。" 89627268,8257003,MUMmer详解:比对大片段序列的步骤与应用,"['数据结构与算法', '生物信息学', '基因组学']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django REST framework 学习笔记(三)

使用mixins和generics

  • mixins是一个基于类的API视图
  • generics用来创建API视图
  • 使用基于类的API视图最大的好处是我们可以编写可重复使用的方法
  • 这次我们使用mixins类进行编写API的增删查改功能
  • 我们将使用mixins实现用更加简洁的代码来编写
  • 接下来的操作都是在前面项目的基础上
  • 编写views.py文件
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
from rest_framework import mixins
from rest_framework import generics

class SnippetList(mixins.ListModelMixin,
                  mixins.CreateModelMixin,
                  generics.GenericAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)


class SnippetDetail(mixins.RetrieveModelMixin,
                    mixins.UpdateModelMixin,
                    mixins.DestroyModelMixin,
                    generics.GenericAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)
        
  • 我们使用了GenericAPIView来创建API视图,并且添加上mixins类提供的ListModelMixinCreateModelMixin
    以及RetrieveModelMixinUpdateModelMixinDestroyModelMixin
  • mixins类提供了.list().create().retrieve().update().destroy()操作
    分别对应getpostgetputdelete 方法
mixins操作请求方法响应
ListModelMixin.list()get获取所有实例
CreateModelMixin.create()post增加实例
RetrieveModelMixin.retrieve()get获取单个实例
UpdateModelMixin.update()put修改实例
DestroyModelMixin.destroy()delete删除实例
  • generics类还有更加简洁的写法,使得我们的代码更加干净,节省更多的时间
  • 即将ListModelMixinCreateModelMixinGenericAPIView合并到一起变为ListCreateAPIView
  • RetrieveModelMixinUpdateModelMixinDestroyModelMixinGenericAPIView合并到一起变为RetrieveUpdateDestroyAPIView
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
from rest_framework import generics


class SnippetList(generics.ListCreateAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer


class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
    
  • 只用了极少的代码就实现了跟上面一样的功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_linbobo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值