DRF框架总结

序列化器类

类名                                                                  
 Serializer  

1)如果定义的序列化器类不是针对于模型类,可以直接继承此类即可。

2)没有提供save时的create方法和update方法。

 
 ModelSerializer

 1)如果定义的序列化器类是针对于模型类,可以直接继承此类即可。

2)提供了save时的create方法和update方法。 

1)序列化:

python
创建序列化器对象并传入所有序列化的对象
serializer = BookInfoSerializer(book)
获取序列化之后的字典数据
serializer.data
 

2)反序列化-数据验证

python
 创建序列化器对象并传入数据
serializer = BookInfoSerializer(data=data)
 调用`is_valid`方法进行数据验证
serializer.is_valid()
 

3)反序列化-新增或更新

a)新增

python
 创建序列化器对象并传入数据
serializer = BookInfoSerializer(data=data)
 调用`is_valid`方法进行数据验证
serializer.is_valid()
 调用`save`方法时会调用序列化器类中的`create`方法,可以在`create`方法中实现数据的添加
serializer.save()
```

b)更新

python
 创建序列化器对象并传入数据
serializer = BookInfoSerializer(book, data=data)
 调用`is_valid`方法进行数据验证
serializer.is_valid()
 调用`save`方法时会调用序列化器类中的`update`方法,可以在`update`方法中实现数据的添加
serializer.save()

视图类

 类名                                           
 APIView        

1)继承自View,封装了Django 本身的HttpRequest对象为Request对象。

2)认证&权限&限流。 


 GenericAPIView

1)继承自APIView,提供了操作序列化器和数据库数据的方法,通常和Mixin扩展类配合使用。

2)过滤&排序&分页。 

 扩展类

类名
 ListModelMixin   —— 提供了一个list方法,封装了返回模型数据列表信息的通用流程。   
CreateModelMixin   —— 提供了一个create方法,封装了创建一条模型对象数据信息的通用流程。 
 RetrieveModelMixin ——提供了一个retrieve方法,封装了获取一条模型对象数据信息的通用流程。 
 UpdateModelMixin  —— 提供了一个update方法,封装了更新一条模型对象数据信息的通用流程。 
 DestroyModelMixin —— 提供了一个destroy方法,封装了删除一条模型对象数据信息的通用流程。 

 子类视图类

类名   


 ListAPIView                  

1)继承自ListModelMixin和GenericAPIView。

2)如果想定义一个视图只提供`列出模型所有`信息的接口,继承此视图类是最快的方式。 


CreateAPIView                 

1)继承自CreateModelMixin和GenericAPIView。

2)如果想定义一个视图只提供`创建一个模型信息`的接口,继承此视图类是最快的方式。

 
RetrieveAPIView               

1)继承自RetrieveModelMixin和GenericAPIView。

2)如果想定义一个视图只提供`获取一个模型信息`的接口,继承此视图类是最快的方式。

 
UpdateAPIView                

1)继承自UpdateModelMixin和GenericAPIView。

2)如果只想定义一个视图只提供`更新一个模型信息`的接口,继承此视图类是最快的方式。

 
 DestroyAPIView              

1)继承自DestroyModelMixin和GenericAPIView。

2)如果只想定义一个视图只提供`删除一个模型信息`的接口,继承此视图类是最快的方式。

 
 ListCreateAPIView             

1)继承自ListModelMixin,CreateModelMixin和GenericAPIView。

2)如果只想定义一个视图提供`列出模型所有`和`创建一个模型信息`的接口,继承此视图类是最快的方式。

 
RetrieveUpdateAPIView        

1)继承自RetrieveModelMixin,UpdateModelMixin和GenericAPIView。

2)如果只想定义一个视图提供`获取一个模型信息`和`更新一个模型信息`的接口,继承此视图类是最快的方式

 
RetrieveUpdateDestoryAPIView

1)继承自RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin和GenericAPIView。

2)如果只想定义一个视图提供`获取一个模型信息`和`更新一个模型信息`和`删除一个模型信息`的接口,继承此视图类是最快的方式。 

 

视图集类

 类名
 ViewSet              

 1)继承自ViewSetMixin和APIView。

2)如果使用视图集时不涉及数据库的操作,可以直接继承此类。 


 GenericViewSet      

1)继承自ViewSetMixin和GenericAPIView。

2)如果使用视图集涉及数据的操作,可以直接继承此类。

 
 ModelViewSet          

1)继承自5个Mixin扩展和GenericViewSet。

2)如果使用视图集想一次提供通用的5种操作,继承这个类是最快的。

 
 ReadOnlyModelViewSet  

1)继承自ListModelMixin,RetrieveModelMixin和GenericViewSet。

2)如果使用视图集想一次提供list操作和retrieve操作,继承这个类是最快的。 

 注: 除了常见的5种基本操作之外,如果想给一个视图集中添加其他处理方法,直接在视图集中定义即可。

路由Router

 注: 

 1)路由Router是专门配合视图集来使用的,可以使用Router自动生成视图集中相应处理函数对应的URL配置项。

2)使用Router自动生成视图集中相应处理函数对应的URL配置项时,除了常见的5种基本操作之外,如果视图集中有添加的其他处理方法,则需要给这些方法加上action装饰器之后,才会动态生成其对应的URL配置项。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: DRF(Django Rest Framework)框架可以让你自定义错误处理。你可以定义一个自定义异常类来处理特定的错误,并在视图中抛出该异常。然后,在配置的异常处理器中对该异常进行处理。你也可以重写DRF的默认异常处理器来处理所有错误。 ### 回答2: 在DRF框架中,我们可以通过自定义错误处理来提供更加友好和详细的错误提示信息。自定义错误处理可以帮助我们在API开发过程中能够迅速定位和解决问题,提高开发效率。 首先,我们可以通过重写DRF中的异常处理器来自定义错误响应。通过继承`exception_handler`方法,我们可以在该方法中检查不同的异常类型,并返回相应的错误响应。可以处理的异常类型包括`APIException`、`PermissionDenied`、`AuthenticationFailed`等。 在自定义错误响应中,我们可以设置不同的错误码、错误信息和HTTP状态码,以确保错误响应符合我们的需求。例如,我们可以根据不同的异常返回不同的错误码以及对应的错误信息,可以参考HTTP状态码的规范来制定自己的错误码。 除了自定义错误响应外,我们还可以对DRF中的验证器进行自定义。通过继承DRF中的验证器类,我们可以自定义各种验证规则,以满足不同的业务需求。在自定义验证器中,我们可以通过重写验证方法来实现特定的验证逻辑。 另外,我们还可以自定义错误处理的日志记录。通过重写`handle_exception`方法,我们可以在捕获异常时,将异常的相关信息记录到日志中,便于后续排查问题。在日志记录中,我们可以输出异常的类型、错误信息、请求参数等,以便于定位问题所在。 总之,通过DRF框架的自定义错误处理功能,我们可以灵活地定制错误响应、验证规则和日志记录等,提高API开发的可维护性和稳定性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值