#serializers.py
从rest_framework导入序列化器
#在此处创建序列化器。
从 inventoryapp.models 导入 Inventory
类 InventorySerializer(serializers.ModelSerializer): 类元: 型号=库存 字段=“全部”
from django.urls 导入路径 从 django.contrib 导入 admin 从 .views 导入(InventoryItemListAPIView, InventoryItemCategoryListAPIView, 库存项目排序API视图, 库存项目编辑API视图, )
urlpatterns = [ 路径('admin/', admin.site.urls), 路径('库存/物品/', InventoryItemListAPIView.as_view(), name='inventory_items_list'), 路径('库存/项目/查询/str:类别/', InventoryItemCategoryListAPIView.as_view(), name='inventory_items_by_category'), 路径('items/query/str:category/', InventoryItemCategoryListAPIView.as_view(), name='inventory_items_by_category'), 路径('items/sort/', InventoryItemSortAPIView.as_view(), name='inventory_items_sort'), 路径('库存/项目/int:item_id/', InventoryItemEditAPIView.as_view(), name='inventory_items_edit_delete'), ]
视图.py 从rest_framework导入视图集 从rest_framework.views导入APIView 从rest_framework.response导入响应 从.models导入库存 从 .serializer 导入 InventorySerializer 从rest_framework导入状态
#在这里创建您的观点
类 InventoryItemListAPIView(APIView): def get(自身, 请求, *args, **kwargs): items = Inventory.objects.all() 序列化器= InventorySerializer(项目,许多= True) 返回响应(serializer.data,status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs):
serializer = InventorySerializer(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)
类 InventoryItemCategoryListAPIView(APIView): def get(自我, 请求, 类别, *args, **kwargs): items = Inventory.objects.filter(类别=类别) 序列化器= InventorySerializer(项目,许多= True) 返回响应(serializer.data,status=status.HTTP_200_OK)
类 InventoryItemSortAPIView(APIView): def get(自身, 请求, *args, **kwargs): items = Inventory.objects.all().order_by('-price') 序列化器= InventorySerializer(项目,许多= True) 返回响应(serializer.data,status=status.HTTP_200_OK)
类 InventoryItemEditAPIView(APIView): def put(self, request, item_id, *args, **kwargs): 尝试: item = Inventory.objects.get(id=item_id) 序列化器= InventorySerializer(实例=项目,数据= request.data,部分= True) 如果序列化器.is_valid(): 序列化器.save() 返回响应(serializer.data,status=status.HTTP_200_OK) 除了 Inventory.DoesNotExist: 返回响应({'错误':'找不到项目'},状态= status.HTTP_404_NOT_FOUND)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, item_id, *args, **kwargs):
try:
item = Inventory.objects.get(id=item_id)
item.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
except Inventory.DoesNotExist:
return Response({'error': 'Item not found'}, status=status.HTTP_404_NOT_FOUND)