![]()
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from app01.myserialize import BookSerialize
from app01.models import Book,Author
# Create your views here.
# 抽的第一层
class List:
model = Book.objects.all()
def lis(self, request):
response = {"status": 100, "msg": "查看所有"}
all_list = self.model
ser = self.Ser(all_list, many=True)
response["data"] = ser.data # 序列化以后的数据在data里
return Response(response)
def create(self,request):
response = {"status": 100, "msg": "插入成功"}
try:
book_ser = self.Ser(data=request.data)
if book_ser.is_valid():
book_ser.save()
response['data'] = book_ser.data
else:
response['msg'] = book_ser.errors
except Exception as e:
response['msg'] = str(e)
return Response(response)
def fetch(self, request, pk, *args, **kwargs):
response = {"status": 100, "msg": "查看单条"}
book = self.model.filter(nid=pk).first()
ser = self.Ser(book, many=False)
response["data"] = ser.data # 序列化以后的数据在data里
return Response(response)
def remove(self,request, pk, *args, **kwargs):
self.model.filter(nid=pk).delete()
return Response("")
def update(self, request, pk, *args, **kwargs):
response = {"status": 100, "msg": "修改成功"}
book_obj = self.model.filter(nid=pk).first()
book_ser = self.Ser(data=request.data, instance=book_obj) # 反序列化,指定要修改的数据库
if book_ser.is_valid():
book_ser.save() # 修改数据库( rest_framework封装了代码 )
response["data"] = book_ser.data
else:
response["error"] = book_ser.error_messages
return Response(response)
class Books_cla(List): # 第二层
def get(self, request, *args, **kwargs):
return self.lis(request)
def post(self, request):
return self.create(request)
class Book_cla(List): # 第二层
def get(self, request, pk, *args, **kwargs):
return self.fetch(request, pk, *args, **kwargs)
def delete(self, request, pk, *args, **kwargs):
return self.remove(request, pk, *args, **kwargs)
def put(self, request, pk, *args, **kwargs):
return self.update(request, pk, *args, **kwargs)
class Books(Books_cla, APIView):
Ser = BookSerialize
class BookView(Book_cla, APIView):
Ser = BookSerialize