Fixed #8725 -- Handle empty URL patterns in reverse().
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8763 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
30c7ce90c5
commit
e1ea7014ad
|
@ -74,7 +74,11 @@ def normalize(pattern):
|
||||||
# A "while" loop is used here because later on we need to be able to peek
|
# A "while" loop is used here because later on we need to be able to peek
|
||||||
# at the next character and possibly go around without consuming another
|
# at the next character and possibly go around without consuming another
|
||||||
# one at the top of the loop.
|
# one at the top of the loop.
|
||||||
|
try:
|
||||||
ch, escaped = pattern_iter.next()
|
ch, escaped = pattern_iter.next()
|
||||||
|
except StopIteration:
|
||||||
|
return zip([''], [[]])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
if escaped:
|
if escaped:
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
"""
|
||||||
|
Some extra URL patterns that are included at the top level.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.conf.urls.defaults import *
|
||||||
|
from views import empty_view
|
||||||
|
|
||||||
|
urlpatterns = patterns('',
|
||||||
|
url(r'^e-places/(\d+)/$', empty_view, name='extra-places'),
|
||||||
|
url(r'^e-people/(?P<name>\w+)/$', empty_view, name="extra-people"),
|
||||||
|
)
|
|
@ -61,6 +61,9 @@ test_data = (
|
||||||
('inner-extra', NoReverseMatch, ['fred', 'inner'], {}),
|
('inner-extra', NoReverseMatch, ['fred', 'inner'], {}),
|
||||||
('disjunction', NoReverseMatch, ['foo'], {}),
|
('disjunction', NoReverseMatch, ['foo'], {}),
|
||||||
('inner-disjunction', NoReverseMatch, ['10', '11'], {}),
|
('inner-disjunction', NoReverseMatch, ['10', '11'], {}),
|
||||||
|
('extra-places', '/e-places/10/', ['10'], {}),
|
||||||
|
('extra-people', '/e-people/fred/', ['fred'], {}),
|
||||||
|
('extra-people', '/e-people/fred/', [], {'name': 'fred'}),
|
||||||
)
|
)
|
||||||
|
|
||||||
class URLPatternReverse(TestCase):
|
class URLPatternReverse(TestCase):
|
||||||
|
|
|
@ -40,6 +40,7 @@ urlpatterns = patterns('',
|
||||||
url(r'^(?i)test/2/?$', empty_view, name="test2"),
|
url(r'^(?i)test/2/?$', empty_view, name="test2"),
|
||||||
url(r'^outer/(?P<outer>\d+)/',
|
url(r'^outer/(?P<outer>\d+)/',
|
||||||
include('regressiontests.urlpatterns_reverse.included_urls')),
|
include('regressiontests.urlpatterns_reverse.included_urls')),
|
||||||
|
url('', include('regressiontests.urlpatterns_reverse.extra_urls')),
|
||||||
|
|
||||||
# This is non-reversible, but we shouldn't blow up when parsing it.
|
# This is non-reversible, but we shouldn't blow up when parsing it.
|
||||||
url(r'^(?:foo|bar)(\w+)/$', empty_view, name="disjunction"),
|
url(r'^(?:foo|bar)(\w+)/$', empty_view, name="disjunction"),
|
||||||
|
|
Loading…
Reference in New Issue