aboutsummaryrefslogtreecommitdiffstats
path: root/docs/api-guide
diff options
context:
space:
mode:
authorRudolf Olah2013-06-27 16:30:24 -0400
committerRudolf Olah2013-06-27 16:30:24 -0400
commitf5f23793e34324552f323725fa25f09b34380acc (patch)
tree9288fcc80ad03e2bf3c5b58de7871dae872a2e6b /docs/api-guide
parent1f6a59d76da286e7a89e8e41317beb16a4aab7c7 (diff)
downloaddjango-rest-framework-f5f23793e34324552f323725fa25f09b34380acc.tar.bz2
#955 updated documentation for overriding `routes` attribute in Router sub-classes
Diffstat (limited to 'docs/api-guide')
-rw-r--r--docs/api-guide/routers.md14
1 files changed, 11 insertions, 3 deletions
diff --git a/docs/api-guide/routers.md b/docs/api-guide/routers.md
index b74b6e13..feff0fbf 100644
--- a/docs/api-guide/routers.md
+++ b/docs/api-guide/routers.md
@@ -98,7 +98,7 @@ As with `SimpleRouter` the trailing slashs on the URL routes can be removed by s
Implementing a custom router isn't something you'd need to do very often, but it can be useful if you have specific requirements about how the your URLs for your API are strutured. Doing so allows you to encapsulate the URL structure in a reusable way that ensures you don't have to write your URL patterns explicitly for each new view.
-The simplest way to implement a custom router is to subclass one of the existing router classes. The `.routes` attribute is used to template the URL patterns that will be mapped to each viewset.
+The simplest way to implement a custom router is to subclass one of the existing router classes. The `.routes` attribute is used to template the URL patterns that will be mapped to each viewset. The `.routes` attribute is a list of `Route` named tuples.
## Example
@@ -109,10 +109,18 @@ The following example will only route to the `list` and `retrieve` actions, and
A router for read-only APIs, which doesn't use trailing suffixes.
"""
routes = [
- (r'^{prefix}$', {'get': 'list'}, '{basename}-list'),
- (r'^{prefix}/{lookup}$', {'get': 'retrieve'}, '{basename}-detail')
+ Route(url=r'^{prefix}$',
+ mapping={'get': 'list'},
+ name='{basename}-list',
+ initkwargs={}),
+ Route(url=r'^{prefix}/{lookup}$',
+ mapping={'get': 'retrieve'},
+ name='{basename}-detail',
+ initkwargs={})
]
+The `SimpleRouter` class provides another example of setting the `.routes` attribute.
+
## Advanced custom routers
If you want to provide totally custom behavior, you can override `BaseRouter` and override the `get_urls(self)` method. The method should insect the registered viewsets and return a list of URL patterns. The registered prefix, viewset and basename tuples may be inspected by accessing the `self.registry` attribute.