类继承关系图

django restframework中的view

相比较与函数,基于类的视图有一些区别和优势:

1.组织与特定HTTP方法相关的代码(GET,POST等) 可以通过单独的方法而不是条件分支来解决。

2.面向对象的技术例如Mixin(多继承、混用)可以将代码分解成可重用的组件。

 

APIView

是drf中所有view的父类,本身继承于Django的VIew,只有简单的调度方法和健壮检查。

和View的不同

1.请求和返回使用的drf的Request Response而不是django的HttpRequest HttpResponse。

2.请求传入时进行身份验证,并在传给处理方法前进行权限检验。

3.任何APIException都会被捕捉并放入合适的想要中。

 

GenericAPIView

将model结果集与序列化类作为类属性供调用

继承于APIView,为标准list和detail详情提供了常用行为,每个GenericAPIView都会和一个或多个mixin联合使用。

属性

queryset 需要返回的结果集 (必须设置)

serializer_class 用于序列化的serializer (必须设置)

lookup_field 查找单个model实例时的字段,默认为pk(主键)

lookup_url_kwarg

分页pagination_class

过滤filter_backend

方法:

get_object

get_serializer

perform_create

get_success_headers

 

ModelViewSet

 

 

 

相关文章: