27 视图集

技术27 视图集 27 视图集视图集
"""视图集特点: 1,可以将一组相关的操作, 放在一个类中进行完成 2,不提供get,post方法, 使用retrieve, create方法来替代

27 视图集

视图集

'''

视图集

特点:

1,可以将一组相关的操作,放在一个类中进行完成

2,不提供获取,发布方法,使用检索,创建方法来替代

3,可以将标准的请求方式(获取、发布、放置、删除),和混合中的方法做映射

常见的视图集:

类名称父类作用

视图集APIView可以做路由映射

ViewSetMixin

泛型视图集泛型视图可以做路由映射,可以使用三个属性,三个方法

ViewSetMixin

模型视图集泛型视图所有的增删改查功能,可以使用三个属性,三个方法

5个混合类

ReadOnlyModelViewSet泛型数据透视图获取单个,所有数据,可以使用三个属性,三个方法

检索模型混合

ListModelMixin

'''

路由映射是由ViewSetMixin

viewSet

view

来自。模型导入BookInfo

从姜戈。快捷键导入get_object_or_404

来自。序列化程序导入图书分类器

从休息框架导入视图集

来自rest_framework.response导入响应

类BookViewSet(视图集。视图集):

'''

用于列出或检索用户的简单视图集。

'''

极好的列表(自我,请求):

queryset=BookInfo.objects.all()

序列化程序=BookInfoSerializer(queryset,multi=True)

返回响应(序列化程序。数据)

极好的检索(自身,请求,主键=无):

queryset=BookInfo.objects.all()

# 从数据库对象中获取pk=pk的如果正确返回不正确则404

book=get _ object _ or _ 404(查询集,pk=pk)

序列化程序=图书分类程序(图书)

返回响应(序列化程序。数据)

urls

从django.urls导入路径,包括

来自。导入视图

urlpatterns=[

.

# 视图集

路径(“视图集/”,视图bookviewset。as _ view({ ' get ' : ' list ' }),

路径(' viewSet/int:pk ',视图bookviewset。as _ view({ ' get ' : ' retrieve ' })

]

ReadOnlyModelViewSet

view

f

rom rest_framework import viewsets
class BookInfoReadOnlyViewSet(viewsets.ReadOnlyModelViewSet):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer

urls

# readonlymodelViewSet
path('ReadOnly_viewSet/',views.BookInfoReadOnlyViewSet.as_view({'get':'list'})),
path('ReadOnly_viewSet/int:pk', views.BookInfoReadOnlyViewSet.as_view({'get': 'retrieve'})),

ModelViewSet

view

from rest_framework.viewsets import ModelViewSet
class BookInfoModelViewSet(ModelViewSet):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer

urls

path('model_viewSet/',views.BookInfoModelViewSet.as_view({'get':'list',     'post':'create'})),
path('model_viewSet/int:pk',
views.BookInfoModelViewSet.as_view({'get':
'retrieve','put':'update','delete':'destroy'}))

视图集额外动作

获取阅读量大于20的

views
from rest_framework.viewsets import ModelViewSet
from .serializers import BookInfoSerializers
from .models import BookInfo
from rest_framework.response import Response
?
class BookInfoViewSet(ModelViewSet):
serializer_class = BookInfoSerializers
queryset = BookInfo.objects.all()
?
def read_book(self,request):
books = BookInfo.objects.filter(bread__gt=30)
?
serializer = BookInfoSerializers(instance=books,many=True)
?
return Response(serializer.data,status=201)

urls
from django.urls import path,include
from . import views
?
urlpatterns=[
path('book/',
views.BookInfoViewSet.as_view({'get':'list','post':'create'})),
path('book/int:pk',
views.BookInfoViewSet.as_view({'get': 'retrieve', 'put': 'update','delete':'destroy'})),
]

修改指定id的阅读量

views
......
?
class BookInfoViewSet(ModelViewSet):
......
# 修改指定书籍
def updata_book_read(self,request,pk):
book = self.get_object()
data = request.data
serializer =
self.get_serializer(instance=book,data=data,partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data,status=200)
url
.......
?
urlpatterns=[
......
path('book/readbook/',
views.BookInfoViewSet.as_view({'get': 'read_book'})),
path('book/readbook/int:pk',
views.BookInfoViewSet.as_view({'put': 'updata_book_read'})),
]

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/67483.html

(0)

相关推荐

  • 冬天来了写一段话,冬天的早晨真冷呀写一段话

    技术冬天来了写一段话,冬天的早晨真冷呀写一段话早上,冬天的风啊,真讨厌,我只开着一扇窗户,它就拼命的往我房间里钻,惊醒了我这个小懒虫冬天来了写一段话。我伸了伸懒腰,打了个哈欠,说:冬天啊真冷,恨不得整天睡大觉。虽然我已经

    生活 2021年10月27日
  • d13-接口和内部类

    技术d13-接口和内部类 d13-接口和内部类## 1.接口
    ### 1.1黑马信息管理系统集合改进 (应用)
    + 使用数组容器的弊端1. 容器长度是固定的,不能根据添加功能自动增长 2. 没有提供用

    礼包 2021年11月22日
  • 水垢太厚怎么去除,喝水的时候水垢太多了怎么办

    技术水垢太厚怎么去除,喝水的时候水垢太多了怎么办用醋的方法比较普遍水垢太厚怎么去除、简单 ①水壶煮山芋除垢 在新水壶内,
    放半水壶以上的山芋,加满水,将山芋煮熟,以后再烧水,就不会积水垢了。但要注意水壶煮山芋后,内

    生活 2021年10月21日
  • assert的用法及注意事项有哪些

    技术assert的用法及注意事项有哪些这篇文章主要介绍“assert的用法及注意事项有哪些”,在日常操作中,相信很多人在assert的用法及注意事项有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年11月3日
  • 软件设计-策略模式

    技术软件设计-策略模式 软件设计-策略模式旅行方式的选择旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。类图Javapa

    礼包 2021年12月14日
  • 不开心,有不开心的事情该怎么宣泄

    技术不开心,有不开心的事情该怎么宣泄生活中遇到不开心的事情怎样宣泄不开心:1,要放宽心态。一个人的心态很重要,人生不如意之事十之八九,所以要让自己的心态保持良好,放宽,不要去计较那些不开心的事情,让自己可以积极乐观的面对

    生活 2021年10月29日