24 二级视图
和一级视图相比:
GenericAPIView
来自:从rest_framework.generics导入泛型数据透视图
新增:
字段:
queryset=BookInfo.objects.all()
self.queryset本来可以获取但是编译器不让你获取还是用方法获取吧
self.get_queryset()
serializer _ class=BookInfoSerializer
self.serializer_class
lookup_field='pk' #下面讲解get_object使用
方法:
self.get_serializer(实例=书籍,许多=真)
self.serializer_class()(实例=书籍,许多=真)
self.get_queryset()
self.get_object()自动通过queryset和公园获取单个实例
使用
views.py
类BookInfoGenericView(通用数据透视图):
queryset=BookInfo.objects.all()
serializer _ class=BookInfoSerializer
def get(自我,请求):
books=self.get_queryset()
# books=self.queryset
#序列化程序=self.get_serializer(实例=书籍,许多=真)
#序列化程序=自身。serializer _ class()(实例=书籍,许多=真)
序列化程序=self.get_serializer(实例=书籍,许多=真)
返回响应(序列化程序。数据)
def post(自我,请求):
book=request.data
序列化程序=BookInfoSerializer(数据=书)
序列化程序有效(引发异常=真)
serializer.save()
返回响应(序列化程序。数据)
类BookInfoGenericDetailView(generic view):
查询集=bookinfo。物体。全部()#也是必须填写后面的get_object()是从这里获取
serializer _ class=BookInfoSerializer
def get(自我、请求):
# 参数只能是公园
book=self.get_object()#自动从传入的公园获取
序列化程序=self.get_serializer_class()(实例=书)
返回响应(序列化程序。数据,状态=状态HTTP_200_OK)
# 更新单个
def put(自我、请求):
book_data=request.data
book=self.get_object()
序列化程序=自身。get _ serializer _ class()(实例=书,数据=book_data)
序列化程序有效(引发异常=真)
serializer.save()
返回响应(序列化程序。数据,状态=状态HTTP_201_CREATED)
# 删除单个
极好的删除(自我、请求):
self.get_object().删除()
返回响应(状态=状态HTTP_204_NO_CONTENT)
urls.py
路径(“generic_view_books/”,视图. BookInfoGenericView.as_view()),
路径(' generic_view_books/int:pk ',视图bookinfogenericdetailview。as _ view()),
注意的是:路由和视图函数值必须是公园因为默认是公园如果想要其他的是可以修改
get_object 是如何通过pk获取
自己也去源码看
self.kwargs
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/67478.html