from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from .models import Book
class BookSerializer(serializers.Serializer):
name = serializers.CharField(max_length=8, min_length=3)
price = serializers.IntegerField(max_value=100, min_value=10)
def create(self, validated_data):
book=Book.objects.create(**validated_data)
return book
def update(self, instance, validated_data):
# instance:对象
# validated_data 数据
# 笨办法-y优化--》使用反射
instance.name = validated_data.get('name')
instance.price = validated_data.get('price')
instance.save() # 更改保存到数据中
return instance
from urllib.parse import unquote
from django.http import JsonResponse
from django.shortcuts import render
from django.views import View
from rest_framework.views import APIView
from normal.models import Book
# Create your views here.
# class BookView(View):
# def get(self, request):
# obj_list = Book.objects.all()
# l = []
# for i in obj_list:
# l.append({"name": i.name, "price": i.price})
# return JsonResponse({'code': 100, 'msg': "查询成功", 'results': l})
#
# # 增加
# def post(self, request):
# # urlencode和form-data格式
# data = request.POST
# Book.objects.create(name=data.get('name'), price=data.get('price'))
# return JsonResponse({'code': 100, 'msg': "新增成功", })
#
#
# class BookDetailView(View):
# def get(self, request, pk):
# obj = Book.objects.filter(pk=int(pk)).first()
# return JsonResponse({'code': 100, 'msg': "查询成功", 'results': {'name': obj.name, 'price': obj.price}})
#
# # 修改
# def put(self, request, pk):
# # request.body bytes格式转换成字符串
# data = request.body.decode('utf-8')
# print(data)
# book_list=data.split('&') # 拿到一个列表
# dic = {}
# for item in book_list:
# # 转码只给value转
# dic[item.split('=')[0]] = unquote(item.split('=')[1])
# print(dic)
# Book.objects.filter(pk=int(pk)).update(**dic)
# return JsonResponse({'code': 100, 'msg': "修改成功"})
#
# def delete(self, request, pk):
# obj = Book.objects.filter(pk=int(pk)).delete()
# return JsonResponse({'code': 100, 'msg': "删除成功"})
from .serializer import BookSerializer
from rest_framework.response import Response
class BookView(APIView):
def get(self, request):
obj_list = Book.objects.all()
# 多条数据many=True
serializer = BookSerializer(instance=obj_list,many=True)
return Response({'code': 100, 'msg': "查询成功", 'results': serializer.data})
# 增加
def post(self, request):
# 校验数据
serializer=BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'code': 100, 'msg': "保存成功"})
else:
return Response({'code': 101, 'msg':"保存失败", 'results': serializer.errors})
class BookDetailView(APIView):
def get(self, request, pk):
obj = Book.objects.filter(pk=pk).first()
serializer = BookSerializer(instance=obj)
return Response({'code': 100, 'msg': "查询成功", 'results':serializer.data})
# 修改
def put(self, request, pk):
book_obj=Book.objects.filter(pk=pk).first()
serializer = BookSerializer(instance=book_obj,data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'code': 100, 'msg': "修改成功"})
else:
return Response({'code': 101, 'msg':"保存失败", 'results': serializer.errors})
def delete(self, request, pk):
obj = Book.objects.filter(pk=int(pk)).delete()
return JsonResponse({'code': 100, 'msg': "删除成功"})