Kaydet (Commit) e1ea7014 authored tarafından Malcolm Tredinnick's avatar Malcolm Tredinnick

Fixed #8725 -- Handle empty URL patterns in reverse().


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8763 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst 30c7ce90
...@@ -74,7 +74,11 @@ def normalize(pattern): ...@@ -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:
......
"""
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 = ( ...@@ -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('', ...@@ -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"),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment