快速入手-基于Django-rest-framework的mixins混合类(五)

时间:2025-03-30 07:10:05

1、基于上一章节去修改

创作中心-****

2、只需要修改视图类views.py

from django.shortcuts import render, HttpResponse
from rest_framework.response import Response
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import (
    ListModelMixin,
    CreateModelMixin,
    RetrieveModelMixin,
    UpdateModelMixin,
    DestroyModelMixin,
)
from .models import *
from api.serializer import *

# Create your views here.


class Linkapi(GenericAPIView, ListModelMixin, CreateModelMixin):
    queryset = Link.objects.all()
    serializer_class = LinkSerializer

    #  查看所有字段
    def get(self, request):
        # xuliehua = self.get_serializer(instance=self.get_queryset(), many=True)
        # return Response(xuliehua.data)
        return self.list(request)

    # 新增数据
    def post(self, request):

        # xuliehua = self.get_serializer(data=request.data)
        # if xuliehua.is_valid():
        #     xuliehua.save()
        #     return Response(xuliehua.data)
        # else:
        #     return Response(xuliehua.errors)
        return self.create(request)


# 指定一条的请求 删除  查一条、修改一条
class Linkapidetail(
    GenericAPIView, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
):
    queryset = Link.objects.all()
    serializer_class = LinkSerializer

    # 查询单条记录
    def get(self, request, pk):
        # xuliehua = self.get_serializer(instance=self.get_object(), many=False)
        # return Response(xuliehua.data)
        return self.retrieve(request, pk)

    # 更新单条数据
    def put(self, request, pk):
        # xuliehua = self.get_serializer(instance=self.get_object(), data=request.data)
        # if xuliehua.is_valid():
        #     xuliehua.save()
        #     return Response(xuliehua.data)
        # else:
        #     return Response(xuliehua.errors)
        return self.update(request, pk)

    # 更新单条数据中的部分字段  ,和put方法里边内容几乎一样,除了partial=True
    def patch(self, request, pk):
        # xuliehua = self.get_serializer(
        #     instance=self.get_object(), data=request.data, partial=True
        # )
        # if xuliehua.is_valid():
        #     xuliehua.save()
        #     return Response(xuliehua.data)
        # else:
        #     return Response(xuliehua.errors)
        return self.update(request, pk, partial=True)

    def delete(self, request, pk):
        # self.get_object().delete()
        # return Response("删除成功")
        return self.destroy(request, pk)

3、用apifox测试正常

4、 代码下载

链接: https://pan.baidu.com/s/16zZ1HwGxckGsHyAd-gvs3g?pwd=wpx4 提取码: wpx4