aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-02-23 16:02:16 +0000
committerTom Christie2012-02-23 16:02:16 +0000
commit2d2e2f95b0268c3282edfca5c047bdc831133016 (patch)
tree0e88c8f550be63567768eb1faf8f0a5f72d13cf5
parentafdda88b13bb168d91cee267799a7e8d9bf26366 (diff)
downloaddjango-rest-framework-2d2e2f95b0268c3282edfca5c047bdc831133016.tar.bz2
Cleanup of reverse docs
-rw-r--r--djangorestframework/tests/reverse.py31
-rw-r--r--docs/howto/reverse.rst31
2 files changed, 46 insertions, 16 deletions
diff --git a/djangorestframework/tests/reverse.py b/djangorestframework/tests/reverse.py
index 3dd13ef8..01ba19b9 100644
--- a/djangorestframework/tests/reverse.py
+++ b/djangorestframework/tests/reverse.py
@@ -3,11 +3,11 @@ from django.test import TestCase
from django.utils import simplejson as json
from djangorestframework.renderers import JSONRenderer
-from djangorestframework.reverse import reverse
+from djangorestframework.reverse import reverse, reverse_lazy
from djangorestframework.views import View
-class MyView(View):
+class ReverseView(View):
"""
Mock resource which simply returns a URL, so that we can ensure
that reversed URLs are fully qualified.
@@ -15,10 +15,23 @@ class MyView(View):
renderers = (JSONRenderer, )
def get(self, request):
- return reverse('myview', request=request)
+ return reverse('reverse', request=request)
+
+
+class LazyView(View):
+ """
+ Mock resource which simply returns a URL, so that we can ensure
+ that reversed URLs are fully qualified.
+ """
+ renderers = (JSONRenderer, )
+
+ def get(self, request):
+ return reverse_lazy('lazy', request=request)
+
urlpatterns = patterns('',
- url(r'^myview$', MyView.as_view(), name='myview'),
+ url(r'^reverse$', ReverseView.as_view(), name='reverse'),
+ url(r'^lazy$', LazyView.as_view(), name='lazy'),
)
@@ -29,5 +42,11 @@ class ReverseTests(TestCase):
urls = 'djangorestframework.tests.reverse'
def test_reversed_urls_are_fully_qualified(self):
- response = self.client.get('/myview')
- self.assertEqual(json.loads(response.content), 'http://testserver/myview')
+ response = self.client.get('/reverse')
+ self.assertEqual(json.loads(response.content),
+ 'http://testserver/reverse')
+
+ #def test_reversed_lazy_urls_are_fully_qualified(self):
+ # response = self.client.get('/lazy')
+ # self.assertEqual(json.loads(response.content),
+ # 'http://testserver/lazy')
diff --git a/docs/howto/reverse.rst b/docs/howto/reverse.rst
index 73b8fa4d..0a7af0e9 100644
--- a/docs/howto/reverse.rst
+++ b/docs/howto/reverse.rst
@@ -1,23 +1,32 @@
Returning URIs from your Web APIs
=================================
-As a rule, it's probably better practice to return absolute URIs from you web APIs, e.g. "http://example.com/foobar", rather than returning relative URIs, e.g. "/foobar".
+As a rule, it's probably better practice to return absolute URIs from you web
+APIs, e.g. "http://example.com/foobar", rather than returning relative URIs,
+e.g. "/foobar".
The advantages of doing so are:
* It's more explicit.
* It leaves less work for your API clients.
-* There's no ambiguity about the meaning of the string when it's found in representations such as JSON that do not have a native URI type.
-* It allows us to easily do things like markup HTML representations with hyperlinks.
+* There's no ambiguity about the meaning of the string when it's found in
+ representations such as JSON that do not have a native URI type.
+* It allows us to easily do things like markup HTML representations
+ with hyperlinks.
-Django REST framework provides two utility functions to make it simpler to return absolute URIs from your Web API.
+Django REST framework provides two utility functions to make it simpler to
+return absolute URIs from your Web API.
-There's no requirement for you to use them, but if you do then the self-describing API will be able to automatically hyperlink its output for you, which makes browsing the API much easier.
+There's no requirement for you to use them, but if you do then the
+self-describing API will be able to automatically hyperlink its output for you,
+which makes browsing the API much easier.
-reverse(viewname, request, ...)
+reverse(viewname, ..., request=None)
-------------------------------
-The :py:func:`~reverse.reverse` function has the same behavior as `django.core.urlresolvers.reverse`_, except that it takes a request object and returns a fully qualified URL, using the request to determine the host and port::
+The `reverse` function has the same behavior as
+`django.core.urlresolvers.reverse`_, except that it optionally takes a request
+keyword argument, which it uses to return a fully qualified URL.
from djangorestframework.reverse import reverse
from djangorestframework.views import View
@@ -25,15 +34,17 @@ The :py:func:`~reverse.reverse` function has the same behavior as `django.core.u
class MyView(View):
def get(self, request):
context = {
- 'url': reverse('year-summary', request, args=[1945])
+ 'url': reverse('year-summary', args=[1945], request=request)
}
return Response(context)
-reverse_lazy(viewname, request, ...)
+reverse_lazy(viewname, ..., request=None)
------------------------------------
-The :py:func:`~reverse.reverse_lazy` function has the same behavior as `django.core.urlresolvers.reverse_lazy`_, except that it takes a request object and returns a fully qualified URL, using the request to determine the host and port.
+The `reverse_lazy` function has the same behavior as
+`django.core.urlresolvers.reverse_lazy`_, except that it optionally takes a
+request keyword argument, which it uses to return a fully qualified URL.
.. _django.core.urlresolvers.reverse: https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse
.. _django.core.urlresolvers.reverse_lazy: https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse-lazy