【问题标题】:Get all action names from ViewSet (drf)从 ViewSet (drf) 中获取所有动作名称
【发布时间】:2019-11-21 13:54:52
【问题描述】:

是否有可能从 DRF 中的 ViewSet 获取所有操作名称?
我的意思不仅是标准的 listretrieve 等,还有自定义的(由 @action 装饰器定义)
我试过使用action_map,但它是空的

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    我认为没有直接的方法可以获取 ViewSet 类中指定的所有操作。但是,Routers 通常以类似的方式生成 URL。所以,我将在这里使用DRF Routers

    from rest_framework.routers import SimpleRouter
    
    router = SimpleRouter()
    routes = router.get_routes(YourViewsetClass)
    action_list = []
    for route in routes:
        action_list += list(route.mapping.values())
    distinct_action_list = set(action_list)

    【讨论】:

      【解决方案2】:

      我正在使用rest_framework version 3.11.2,你可以这样做:

      actions = [action for action in YourViewsetClass.get_extra_actions()]
      action_names = [action.__name__ for action in YourViewsetClass.get_extra_actions()]
      action_url_names = [action.url_name for action in YourViewsetClass.get_extra_actions()]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-03
        • 1970-01-01
        相关资源
        最近更新 更多