diff options
| author | Tom Christie | 2014-01-13 07:34:58 -0800 |
|---|---|---|
| committer | Tom Christie | 2014-01-13 07:34:58 -0800 |
| commit | 4ab97843e8ebdb037110e09d9e2a7cd45e61a406 (patch) | |
| tree | 937cf83b484a45794b7f942fb6a1c9a78f46f669 /rest_framework/routers.py | |
| parent | a90796c0f0d9db1a7d9bfaca8fbdfed22435c628 (diff) | |
| parent | 899381575a6038f550a064261ed5c6ba0655211b (diff) | |
| download | django-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.py | 17 |
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): """ |
