aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/routers.py
diff options
context:
space:
mode:
authorTom Christie2014-01-13 07:34:58 -0800
committerTom Christie2014-01-13 07:34:58 -0800
commit4ab97843e8ebdb037110e09d9e2a7cd45e61a406 (patch)
tree937cf83b484a45794b7f942fb6a1c9a78f46f669 /rest_framework/routers.py
parenta90796c0f0d9db1a7d9bfaca8fbdfed22435c628 (diff)
parent899381575a6038f550a064261ed5c6ba0655211b (diff)
downloaddjango-rest-framework-4ab97843e8ebdb037110e09d9e2a7cd45e61a406.tar.bz2
Merge pull request #1333 from bodylabs/2.4.0+lookup_regex
Let viewsets specify their regex
Diffstat (limited to 'rest_framework/routers.py')
-rw-r--r--rest_framework/routers.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/rest_framework/routers.py b/rest_framework/routers.py
index 740d58f0..df1233fd 100644
--- a/rest_framework/routers.py
+++ b/rest_framework/routers.py
@@ -219,13 +219,18 @@ class SimpleRouter(BaseRouter):
https://github.com/alanjds/drf-nested-routers
"""
- if self.trailing_slash:
- base_regex = '(?P<{lookup_prefix}{lookup_field}>[^/]+)'
- else:
- # Don't consume `.json` style suffixes
- base_regex = '(?P<{lookup_prefix}{lookup_field}>[^/.]+)'
+ base_regex = '(?P<{lookup_prefix}{lookup_field}>{lookup_value})'
lookup_field = getattr(viewset, 'lookup_field', 'pk')
- return base_regex.format(lookup_field=lookup_field, lookup_prefix=lookup_prefix)
+ try:
+ lookup_value = viewset.lookup_value_regex
+ except AttributeError:
+ # Don't consume `.json` style suffixes
+ lookup_value = '[^/.]+'
+ return base_regex.format(
+ lookup_prefix=lookup_prefix,
+ lookup_field=lookup_field,
+ lookup_value=lookup_value
+ )
def get_urls(self):
"""