summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Davis <bendavis78@gmail.com>2014-04-14 13:09:17 -0400
committerTim Graham <timograham@gmail.com>2014-04-16 20:31:09 -0400
commite0930608230fc7e1f1a68d51296661200857658a (patch)
treef649b706c15ccdcd490c166365eb70e23ee1c58f
parent82803611eb1ca2ec8f4ea8569d4bf4abbd91cdb2 (diff)
[1.6.x] Fixed #22220 -- Added more examples to reverse() documention.
Thanks EvilDMP for the suggestions. Backport of 030dd4f72c from master
-rw-r--r--docs/ref/urlresolvers.txt38
1 files changed, 28 insertions, 10 deletions
diff --git a/docs/ref/urlresolvers.txt b/docs/ref/urlresolvers.txt
index dc06a21f2b..549334d4ed 100644
--- a/docs/ref/urlresolvers.txt
+++ b/docs/ref/urlresolvers.txt
@@ -12,17 +12,38 @@ your code, Django provides the following function:
.. function:: reverse(viewname, [urlconf=None, args=None, kwargs=None, current_app=None])
-``viewname`` is either the function name (either a function reference, or the
-string version of the name, if you used that form in ``urlpatterns``) or the
-:ref:`URL pattern name <naming-url-patterns>`. Normally, you won't need to
-worry about the ``urlconf`` parameter and will only pass in the positional and
-keyword arguments to use in the URL matching. For example::
+``viewname`` can be a string containing the Python path to the view object, a
+:ref:`URL pattern name <naming-url-patterns>`, or the callable view object.
+For example, given the following ``url``::
+
+ url(r'^archive/$', 'news.views.archive', name='news_archive')
+
+you can use any of the following to reverse the URL::
+
+ # using the Python path
+ reverse('news.views.archive')
+
+ # using the named URL
+ reverse('news_archive')
+
+ # passing a callable object
+ from news import views
+ reverse(views.archive)
+
+If the URL accepts arguments, you may pass them in ``args``. For example::
from django.core.urlresolvers import reverse
def myview(request):
return HttpResponseRedirect(reverse('arch-summary', args=[1945]))
+You can also pass ``kwargs`` instead of ``args``. For example::
+
+ >>> reverse('admin:app_list', kwargs={'app_label': 'auth'})
+ '/admin/auth/'
+
+``args`` and ``kwargs`` cannot be passed to ``reverse()`` at the same time.
+
If no match can be made, ``reverse()`` raises a
:class:`~django.core.urlresolvers.NoReverseMatch` exception.
@@ -39,12 +60,9 @@ This ``current_app`` argument is used as a hint to resolve application
namespaces into URLs on specific application instances, according to the
:ref:`namespaced URL resolution strategy <topics-http-reversing-url-namespaces>`.
-You can use ``kwargs`` instead of ``args``. For example::
+The ``urlconf`` argument is the URLconf module containing the url patterns to
+use for reversing. By default, the root URLconf for the current thread is used.
- >>> reverse('admin:app_list', kwargs={'app_label': 'auth'})
- '/admin/auth/'
-
-``args`` and ``kwargs`` cannot be passed to ``reverse()`` at the same time.
.. admonition:: Make sure your views are all correct.