django-rest-framework
类视图
继承:主要由三个
from rest_framework import mixins, generics, viewsets, permissions
每个类视图都必须由apiview,把类视图解析成视图函数用,再集成其他的mixins,也有框架自己集成好的,用viewsets
1. mixins
里面有集成好的各种方法,有:list/retrieve/create/update/destory
也有组合好的
必须和apiview(viewsets.GenericsAPIView)配合使用,两个都得有
2. generics
里面主要是封装了mixins,有几种简单的组合,可以方便使用,注意必须和viewsets配合使用
ListAPIView / RetrieveAPIView / CreateAPIView / ListCreateAPIView .....
3. viewsets
里面页由封装的mixins和APIView,如:ModelAPIView把所有的方法(5种)都写到了里面,当然还有其他组合,其他两项都必须和viewsets配合使用
参数
- queryset 是能够操作的查询集
permission_classes 是权限组,元组,可以自定义权限类,自定义要继承自permissions.BasePermission
# request是请求,view是视图函数,obj是操作的对象 class MyPermission(permissions.BasePermission): def has_object_permission(self, request, view, obj): return obj.user == request.user # 这个类意思是:请求user必须是obj的user才能操作
# 使用方法 permission_classes = (MyPermission,)
- serializer_class = UserInfoSerializer
处理函数的serializer,可以给同一个类视图中不同方法不同视图,就是改写视图方法,记着把context写进去,不然图片url会不全
router 路由注册
from rest_framework import routers
生成路由
router = routers.SimpleRouter()
注册视图
router.register(r’users’, views.UserInfoView)
添加到url
urlpatterns += router.urls
router的坑
类视图函数继承as_view函数的时候最好用viewsets.GenericViewSet,否则可能会报错,不要用generic.GenericApiView