1
0
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:
daniel a rios
2019-04-24 22:51:47 +02:00
committed by Mariusz Felisiak
parent d640c71fa3
commit 76b993a117
3 changed files with 17 additions and 5 deletions

View File

@@ -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/')