diff options
| author | Tom Christie | 2013-06-04 20:59:12 +0100 |
|---|---|---|
| committer | Tom Christie | 2013-06-04 20:59:12 +0100 |
| commit | f1251e8c58e86db11028396d79f01db5dfcf9e52 (patch) | |
| tree | e69f88d597b51a93c49b87c9dfa6d55f1d6be13e /rest_framework/routers.py | |
| parent | ffa27b840f66d24562de9f66a9ac7a4142da51db (diff) | |
| download | django-rest-framework-f1251e8c58e86db11028396d79f01db5dfcf9e52.tar.bz2 | |
Added trailing_slash argument to routers. Closes #905
Diffstat (limited to 'rest_framework/routers.py')
| -rw-r--r-- | rest_framework/routers.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 6c5fd004..9764e569 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -18,7 +18,6 @@ from __future__ import unicode_literals from collections import namedtuple from rest_framework import views from rest_framework.compat import patterns, url -from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.reverse import reverse from rest_framework.urlpatterns import format_suffix_patterns @@ -72,7 +71,7 @@ class SimpleRouter(BaseRouter): routes = [ # List route. Route( - url=r'^{prefix}/$', + url=r'^{prefix}{trailing_slash}$', mapping={ 'get': 'list', 'post': 'create' @@ -82,7 +81,7 @@ class SimpleRouter(BaseRouter): ), # Detail route. Route( - url=r'^{prefix}/{lookup}/$', + url=r'^{prefix}/{lookup}{trailing_slash}$', mapping={ 'get': 'retrieve', 'put': 'update', @@ -95,7 +94,7 @@ class SimpleRouter(BaseRouter): # Dynamically generated routes. # Generated using @action or @link decorators on methods of the viewset. Route( - url=r'^{prefix}/{lookup}/{methodname}/$', + url=r'^{prefix}/{lookup}/{methodname}{trailing_slash}$', mapping={ '{httpmethod}': '{methodname}', }, @@ -104,6 +103,10 @@ class SimpleRouter(BaseRouter): ), ] + def __init__(self, trailing_slash=True): + self.trailing_slash = trailing_slash and '/' or '' + super(SimpleRouter, self).__init__() + def get_default_base_name(self, viewset): """ If `base_name` is not specified, attempt to automatically determine @@ -193,7 +196,11 @@ class SimpleRouter(BaseRouter): continue # Build the url pattern - regex = route.url.format(prefix=prefix, lookup=lookup) + regex = route.url.format( + prefix=prefix, + lookup=lookup, + trailing_slash=self.trailing_slash + ) view = viewset.as_view(mapping, **route.initkwargs) name = route.name.format(basename=basename) ret.append(url(regex, view, name=name)) |
