【发布时间】:2019-11-21 13:54:52
【问题描述】:
是否有可能从 DRF 中的 ViewSet 获取所有操作名称?
我的意思不仅是标准的 list、retrieve 等,还有自定义的(由 @action 装饰器定义)
我试过使用action_map,但它是空的
【问题讨论】:
标签: django django-rest-framework
是否有可能从 DRF 中的 ViewSet 获取所有操作名称?
我的意思不仅是标准的 list、retrieve 等,还有自定义的(由 @action 装饰器定义)
我试过使用action_map,但它是空的
【问题讨论】:
标签: django django-rest-framework
我认为没有直接的方法可以获取 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)
【讨论】:
我正在使用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()]
【讨论】: