• 欢迎光临~

DRF视图集中添加其他API--@action装饰器

开发技术 开发技术 2022-12-18 次浏览

问题:DRF视图集中若想添加其他API?

通过给视图集中的函数,添加DRF的@action()装饰器

DRF的@action装饰器,用来为函数添加路由,主要参数有:

  • methods:支持的请求方式,值为一个列表,默认为['GET']
  • detail:布尔类型,表示是否为详细资源对象(即主键是否在url中,True表示是)
  • url_path:指定url路由名称,默认为被action修饰的函数名
  • url_name:指定url名称,默认为被action修饰的函数名,内部操作用

注意:detail为必填参数,显示定义的路由优先级大于默认的

例1:detail=False

class MenuViewSet(BaseModelViewSet):
    """
    菜单管理API
    """
    queryset = Menu.objects.all()
    serializer_class = MenuSerializer

    # 获取用户菜单/菜单按钮权限API
    # detail详情大意为是否需要传pk,若传为True,反之为False
    @action(methods=['GET'], detail=False, url_path='web_router')
    def xingchen(self, request):
        return ResponseOK(msg="获取成功")

DRF视图集中添加其他API--@action装饰器

例2:detail=True

class MenuViewSet(BaseModelViewSet):
    """
    菜单管理API
    """
    queryset = Menu.objects.all()
    serializer_class = MenuSerializer
    @action(methods=['GET'], detail=True)
    def xc(self, request, pk):
        print('id', pk)
        return ResponseOK(msg="获取成功")

DRF视图集中添加其他API--@action装饰器

TRANSLATE with DRF视图集中添加其他API--@action装饰器 x
English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
DRF视图集中添加其他API--@action装饰器
DRF视图集中添加其他API--@action装饰器 DRF视图集中添加其他API--@action装饰器 DRF视图集中添加其他API--@action装饰器
 
TRANSLATE with DRF视图集中添加其他API--@action装饰器
COPY THE URL BELOW
DRF视图集中添加其他API--@action装饰器
DRF视图集中添加其他API--@action装饰器 Back
EMBED THE SNIPPET BELOW IN YOUR SITE DRF视图集中添加其他API--@action装饰器
Enable collaborative features and customize widget: Bing Webmaster Portal
Back
程序员灯塔
转载请注明原文链接:DRF视图集中添加其他API--@action装饰器
喜欢 (0)