定义好序列化器后,视图类的写法
定义好序列化器后,视图类的写法
from app.models import BookInfo from app.serializers import BookInfoSerializer from django.views import View from django import http import json class BookInfoView(View): # 1列表视图,获取所有数据 def get(self,request): #1)获取数据 books = BookInfo.objects.all() #2)序列化 serializer = BookInfoSerializer(instance=books,many=True) #3)返回响应 return http.JsonResponse(serializer.data,safe=False) #safe=False 可以删除吗?? #创建单本书籍 def post(self,request): #1获取参数 dict_data = json.loads(request.body.decode()) btitle = dict_data.get('btitle') bpub_date = dict_data.get('bpub_date') bread = dict_data.get('bread') bcomment=dict_data.get('bcomment') #数据入库 book = BookInfo.objects.create(**dict_data) #数据校验(省略) #返回响应 serializer = BookInfoSerializer(instance=book) return http.JsonResponse(serializer.data) #获取单本数据 def get(self,request,pk): #1获取数据 book = BookInfo.objects.get(pk=pk) #2序列化 serializer = BookInfoSerializer(instance=book) #3返回数据 return http.JsonResponse(serializer.data) #修改单本数据 def put(self,request,pk): #1获取参数、数据 book = BookInfo.objects.get(pk=pk) dict_data=json.loads(request.body.decode()) #2检验参数(省略) #3数据入库 BookInfo.objects.filter(pk=pk).update(**dict_data) #3返回响应 serializer = BookInfoSerializer(instance=book) return http.JsonResponse(serializer.data) ####注意:感觉有问题,获取参数只用了dict_data?对比上面创建单本数据的代码 #删除单本数据 def delete(self,request,pk): #获取数据 book = BookInfo.objects.get(pk=pk) #删除 book.delete() #返回响应 return http.JsonResponse(status=204)
代码还是很长,下一节通过反序列化,可简化入库过程和数据获取过程的代码

浙公网安备 33010602011771号