viewsets总结
作者:互联网
继承viewsets:
1. viewsets继承viewsetMixin,支持list(),create()等action方法;
a. 可直接继承ModelViewSet(继承了mixins和GenericViewSet), 简化代码编写,
ModelViewSet内部有6个接口,若不全部需要,可根据需求继承(注意:最后需继承GenericViewSet):
mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet
b. ReadOnlyModelViewSet:继承自GenericAPIVIew
,同时包括了ListModelMixin、RetrieveModelMixin。
需指定:
queryset = Projects.objects.all()
serializer_class = Projects_ModelSerializer
2. 定义路由时,向as_view()传递一个字典(key为通用请求方法名称,values为调用的actions名称)
3. viewsets内的action方法最常用:可通过self.action获取当前action方法名称,根据不同的action,指定不同的查询集或序列化器类。
若想自定义方法可路由(names),可自动生成路由器条目,需使用:
@action(methods=['GET', 'POST'], detail=False)
"""
a. 可以使用action装饰器,指定定义的action方法(使用路由器时,会自动生成路由条目)
b. 若不指定methods,默认支持GET方法
c.detail:是否需要传递主键id值,需要True,不需要传False
d. url_path: url路径字符串
e. url_name: url路径名称
f. 不指定url_path和url_name,默认为action方法名
"""
标签:总结,继承,mixins,viewsets,url,action,方法 来源: https://www.cnblogs.com/zxy01/p/14265205.html