Skip to content

Commit d972df7

Browse files
committed
Ability to override default method names by customizing it
1 parent 96bb77d commit d972df7

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

rest_framework/routers.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,23 +176,27 @@ def get_routes(self, viewset):
176176
if isinstance(route, DynamicDetailRoute):
177177
# Dynamic detail routes (@detail_route decorator)
178178
for httpmethods, methodname in detail_routes:
179+
method_kwargs = getattr(viewset, methodname).kwargs
180+
custom_method_name = method_kwargs.pop("custom_method_name", None) or methodname
179181
initkwargs = route.initkwargs.copy()
180-
initkwargs.update(getattr(viewset, methodname).kwargs)
182+
initkwargs.update(method_kwargs)
181183
ret.append(Route(
182-
url=replace_methodname(route.url, methodname),
184+
url=replace_methodname(route.url, custom_method_name),
183185
mapping=dict((httpmethod, methodname) for httpmethod in httpmethods),
184-
name=replace_methodname(route.name, methodname),
186+
name=replace_methodname(route.name, custom_method_name),
185187
initkwargs=initkwargs,
186188
))
187189
elif isinstance(route, DynamicListRoute):
188190
# Dynamic list routes (@list_route decorator)
189191
for httpmethods, methodname in list_routes:
192+
method_kwargs = getattr(viewset, methodname).kwargs
193+
custom_method_name = method_kwargs.pop("custom_method_name", None) or methodname
190194
initkwargs = route.initkwargs.copy()
191-
initkwargs.update(getattr(viewset, methodname).kwargs)
195+
initkwargs.update(method_kwargs)
192196
ret.append(Route(
193-
url=replace_methodname(route.url, methodname),
197+
url=replace_methodname(route.url, custom_method_name),
194198
mapping=dict((httpmethod, methodname) for httpmethod in httpmethods),
195-
name=replace_methodname(route.name, methodname),
199+
name=replace_methodname(route.name, custom_method_name),
196200
initkwargs=initkwargs,
197201
))
198202
else:

0 commit comments

Comments
 (0)