一、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__"

网友评论