一、序列化组件
基于上篇随笔的表结构,通过序列化组件的ModelSerializer设计如下三个接口:
GET 127.0.0.1:8000/books/{id} # 获取一条数据,返回值:{} PUT 127.0.0.1:8000/books/{id} # 修改数据,返回值:{} DELETE 127.0.0.1:8000/books/{id} # 删除数据,返回空
urls.py文件:
from django.urls import path, re_path from serializer import views urlpatterns = [ re_path('books/(\d+)/$', views.BookFilterView.as_view()) ]
Views.py文件:
class BookFilterView(APIView): def get(self, request, nid): book_obj = Book.objects.get(pk=nid) serialized_data = BookSerializer(book_obj, many=False) return Response(serialized_data.data) def put(self, request, nid): book_obj = Book.objects.get(pk=nid) verified_data = BookSerializer(data=request.data, instance=book_obj, many=False) if verified_data.is_valid(): verified_data.save() return Response(verified_data.data) else: return Response(verified_data.errors) def delete(self, request, nid): Book.objects.get(pk=nid).delete() return Response()
二、视图组件引入
前面的介绍中,我们已经通过序列化组件设计除了符合REST规范的五个常用接口,现在假设,我们有多个数据接口,比如(Book,Author,Publish...)等数据表都需要定义类似的接口,可以预见,我们需要重复定义类似上面的五个接口,这种方式将会导致大量的重复代码,显然,我们的程序还有很多需要优化的地方,那么,如果是你,将会如何进行优化呢?
首先回顾以下混入类和多继承的知识