﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
13525	Document how to reverse URL patterns with nested groups	Nick Retallack	Bas Peschier	"{{{
## urls.py
from django.conf.urls.defaults import *
from django.http import HttpResponse

urlpatterns = patterns('',
    url(r'^export1\.(?P<format>\w+)$', lambda request: HttpResponse(""THIS""), name='this'),
    url(r'^export2(\.(?P<format>\w+))?$', lambda request: HttpResponse(""THAT""), name='that'),
)

## paste into python manage.py shell

from django.core.urlresolvers import reverse, resolve

# Both urls resolve
resolve('/export1.json')[0](None).content
resolve('/export2.json')[0](None).content

# These reverse
reverse('this', args=['json'])
reverse('this', kwargs={'format':'json'})

# These don't
reverse('that', args=['json'])
reverse('that', kwargs={'format':'json'})

## Shell session output

>>> from django.core.urlresolvers import reverse, resolve
>>> 
>>> # Both urls resolve
>>> resolve('/export1.json')[0](None).content
'THIS'
>>> resolve('/export2.json')[0](None).content
'THAT'
>>> 
>>> # These reverse
>>> reverse('this', args=['json'])
'/export1.json'
>>> reverse('this', kwargs={'format':'json'})
'/export1.json'
>>> 
>>> # These don't
>>> reverse('that', args=['json'])
Traceback (most recent call last):
  File ""<console>"", line 1, in <module>
  File ""/usr/local/Cellar/python/2.6.4/lib/python2.6/site-packages/django/core/urlresolvers.py"", line 350, in reverse
    *args, **kwargs)))
  File ""/usr/local/Cellar/python/2.6.4/lib/python2.6/site-packages/django/core/urlresolvers.py"", line 300, in reverse
    ""arguments '%s' not found."" % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'that' with arguments '('json',)' and keyword arguments '{}' not found.
}}}

"	Cleanup/optimization	closed	Documentation	1.1	Normal	fixed			Ready for checkin	1	0	0	0	0	0
