前言
在DRF中,ModelViewSet为开发者提供了list()、retrieve()、create()、update()、destory()接口,显然不能够满足全部需求,故在开发过程中可以自定义action函数,
使用方法
对于需要指定义方法的视图类,只需为其自定义函数添加 @action 修饰器,如下
@action(methods=['get'],detail=False,url_path='my_method')
def custom_action(self,request):
return Response({'自定义方法')
@action 常用参数
-
detail : 指定该函数是用于集合还是单个实例(如果是单个实例需要传入pk值)
-
methods : 指定http方法,如 ['get','post','put']
-
url_path : 定义 url 路径中的方法名,如不传入,则使用函数名
写在最后
使用修饰器是我认为比较简洁的方案,因为只需要关注函数本身,不需要在注册路由时做改变