美文网首页
Drf apiView 视图实现

Drf apiView 视图实现

作者: 爱修仙的道友 | 来源:发表于2019-04-25 00:24 被阅读0次

    一、apiView -- Serializer

    • serializers.py
    # app/serializers.py
    from rest_framework import serializers
    from . import models
    
    class GoodsSerializer(serializers.Serializer):
        name = serializers.CharField(required=True,max_length=30)
        goods_sn = serializers.CharField()
        sold_num = serializers.IntegerField()
        market_price = serializers.BooleanField()
    
        def create(self, validated_data):
            """
            Create and return a new `Snippet` instance, given the validated data.
            """
            return models.Goods.objects.create(**validated_data)
    
        def update(self, instance, validated_data):
            """
            Update and return an existing `Snippet` instance, given the validated data.
            """
            instance.name = validated_data.get('name', instance.name)
            instance.goods_sn = validated_data.get('goods_sn', instance.goods_sn)
            instance.sold_num = validated_data.get('sold_num', instance.sold_num)
            instance.market_price = validated_data.get('market_price', instance.market_price)
            instance.save()
            return instance
    
    • apiview
    # app/views.py
    from django.http import Http404
    from rest_framework import status
    from rest_framework.views import APIView
    from .serializers import GoodsSerializer
    from rest_framework.response import Response
    
    from . import models
    
    
    class GoodsList(APIView):
        """
        List all snippets, or create a new good.
        """
        def get(self, request, format=None):
            goods = models.Goods.objects.all()
            serializer = GoodsSerializer(goods, many=True)
            return Response(serializer.data)
    
        def post(self, request, format=None):
            serializer = GoodsSerializer(data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data, status=status.HTTP_201_CREATED)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
    
    class GoodsDetail(APIView):
        """
        Retrieve, update or delete a Good instance.
        """
        def get_object(self, pk):
            try:
                return models.Goods.objects.get(pk=pk)
            except models.Goods.DoesNotExist:
                raise Http404
    
        def get(self, request, pk, format=None):
            snippet = self.get_object(pk)
            serializer = GoodsSerializer(snippet)
            return Response(serializer.data)
    
        def put(self, request, pk, format=None):
            snippet = self.get_object(pk)
            serializer = GoodsSerializer(snippet, data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
        def delete(self, request, pk, format=None):
            good = self.get_object(pk)
            good.delete()
            return Response(status=status.HTTP_204_NO_CONTENT)
    
    
    • urls.py
    from . import views
    from django.urls import path
    from rest_framework.urlpatterns import format_suffix_patterns
    
    urlpatterns = [
        path('goods/',views.GoodsList.as_view(),name='goods_list'),
        path('goods/<int:pk>/', views.GoodsDetail.as_view()),
    ]
    
    urlpatterns = format_suffix_patterns(urlpatterns)
    
    • 展示


      image.png
      image.png

    二、apiView -- ModelSerializer

    from rest_framework import serializers
    from . import models
    
    class GoodsSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Goods
            fields = "__all__"
    
    image.png

    相关文章

      网友评论

          本文标题:Drf apiView 视图实现

          本文链接:https://www.haomeiwen.com/subject/yhkogqtx.html