栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【无标题】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【无标题】

1.使用GenericAPIView实现游戏的增删改查

# 使用GenericAPIView实现游戏的增删改查
from rest_framework.generics import GenericAPIView
class GameView3(GenericAPIView):
    queryset = Game.objects.all()  # 指定查询结果集
    serializer_class = GameSerializer2  # 指定序列化器
    def get(self, request):  # 1
        # ORM操作数据 -》 json数据  序列化
        # 获取全部游戏信息 ORM操作数据
        games_data = self.get_queryset()  # 获取查询结果集
        # 使用序列化器,实现序列化
        # 多个数据需要加上 many=True
        ser = self.get_serializer(games_data, many=True)
        # 注意返回的时ser.data 而不是ser
        return Response(ser.data)


    def post(self, request):  # 2 增加数据
        # request.data 就是前端提交的json数据
        # 1.使用序列化器进行反序列化,data参数就是要反序列化的数据
        ser = self.get_serializer(data=request.data)
        # 2.校验  参数raise_exception=True,出现异常时自动抛出异常
        if ser.is_valid(raise_exception=True):
            # 3.保存
            ser.save()
            return Response({'msg':'添加数据成功'}, status=201)
        return Response({'msg': '添加数据失败'}, status=500)

# 根据id 实现 单个 查询 修改 删除
class GameView4(GenericAPIView):
    queryset = Game.objects.all()
    serializer_class = GameSerializer2
    lookup_url_kwarg = 'id'  # 动态参数
    lookup_field = 'id'  # 指定过滤ORM字段
    def get(self, request, id):  # 3
        # 根据id获取数据,单个数据
        try:
            game_data = self.get_object()
        except Exception as e:
            print(e)
            return Response({'msg':'数据不存在'}, status=404)
        ser = self.get_serializer(game_data)
        return Response(ser.data, status=200)

    def put(self, request, id):  # 4 反序列化之更新
        # 1.获取要更新的数据 ORM操作的数据->instance
        try:
            game_data = self.get_object()
        except Exception as e:
            print(e)
            return Response({'msg':'数据不存在'}, status=404)
        # 2.反序列化 game_data要更新的orm对象 request.data去更新这个对象的数据
        ser = self.get_serializer(instance=game_data, data=request.data)
        # 3.校验
        if ser.is_valid(raise_exception=True):
            # 4.保存
            ser.save()
            return Response({'msg':'更新数据成功'}, status=201)
        return Response({'msg':'更新数据失败'}, status=500)

    def delete(self, request, id):  # 5 删除
        try:
            self.get_object().delete()
        except Exception as e:
            print(e)
            return Response({'msg': '删除失败'}, status=404)
        return Response({'msg': '删除数据成功'}, status=204)

2.使用GenericAPIView和混入类Mixin配合使用实现游戏的增删改查

from rest_framework.generics import GenericAPIView
from rest_framework.mixins import ListModelMixin, CreateModelMixin,
    RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
class GameView3(GenericAPIView, ListModelMixin, CreateModelMixin):
    queryset = Game.objects.all()  # 指定查询结果集
    serializer_class = GameSerializer2  # 指定序列化器
    def get(self, request):  # 1
        return self.list(request)

    def post(self, request):  # 2 增加数据
        return self.create(request)

# 根据id 实现 单个 查询 修改 删除
class GameView4(GenericAPIView, RetrieveModelMixin,
                UpdateModelMixin,DestroyModelMixin ):
    queryset = Game.objects.all()
    serializer_class = GameSerializer2
    lookup_url_kwarg = 'id'  # 动态参数
    lookup_field = 'id'  # 指定过滤ORM字段
    def get(self, request, id):  # 3
        return self.retrieve(request)

    def put(self, request, id):  # 4 反序列化之更新
        return self.update(request)

    def delete(self, request, id):  # 5 删除
        return self.destroy(request)

3.使用扩展类实现增删改查操作

from rest_framework.generics import ListCreateAPIView,RetrieveUpdateDestroyAPIView

class GameView3(ListCreateAPIView):
    queryset = Game.objects.all()
    serializer_class = GameSerializer2

class GameView4(RetrieveUpdateDestroyAPIView):
    queryset = Game.objects.all()
    serializer_class = GameSerializer2
#     lookup_url_kwarg = 'id'  # 动态参数
#     lookup_field = 'id'  # 指定过滤ORM字段
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999780.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号