mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #26431 -- Prevented django.urls.resolve() from returning missing optional parameters.
Previous behavior was inconsistent with django.urls.reverse() and caused that translate_url() created an incorrect URL when an optional parameter was missing.
This commit is contained in:
committed by
Mariusz Felisiak
parent
d640c71fa3
commit
76b993a117
@@ -55,10 +55,18 @@ class SimplifiedURLTests(SimpleTestCase):
|
||||
self.assertEqual(match.route, '^regex/(?P<pk>[0-9]+)/$')
|
||||
|
||||
def test_re_path_with_optional_parameter(self):
|
||||
match = resolve('/regex_optional/1/2/')
|
||||
self.assertEqual(match.url_name, 'regex_optional')
|
||||
self.assertEqual(match.kwargs, {'arg1': '1', 'arg2': '2'})
|
||||
self.assertEqual(match.route, r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?')
|
||||
for url, kwargs in (
|
||||
('/regex_optional/1/2/', {'arg1': '1', 'arg2': '2'}),
|
||||
('/regex_optional/1/', {'arg1': '1'}),
|
||||
):
|
||||
with self.subTest(url=url):
|
||||
match = resolve(url)
|
||||
self.assertEqual(match.url_name, 'regex_optional')
|
||||
self.assertEqual(match.kwargs, kwargs)
|
||||
self.assertEqual(
|
||||
match.route,
|
||||
r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?',
|
||||
)
|
||||
|
||||
def test_path_lookup_with_inclusion(self):
|
||||
match = resolve('/included_urls/extra/something/')
|
||||
|
||||
Reference in New Issue
Block a user