mirror of
				https://github.com/django/django.git
				synced 2025-10-26 07:06:08 +00:00 
			
		
		
		
	Fix #20022: Correctly handle prefixes with url-unsafe characters in reverse().
This commit is contained in:
		| @@ -388,7 +388,7 @@ class RegexURLResolver(LocaleRegexProvider): | ||||
|                     if len(args) != len(params) + len(prefix_args): | ||||
|                         continue | ||||
|                     unicode_args = [force_text(val) for val in args] | ||||
|                     candidate = (prefix_norm + result) % dict(zip(prefix_args + params, unicode_args)) | ||||
|                     candidate = (prefix_norm.replace('%', '%%') + result) % dict(zip(prefix_args + params, unicode_args)) | ||||
|                 else: | ||||
|                     if set(kwargs.keys()) | set(defaults.keys()) != set(params) | set(defaults.keys()) | set(prefix_args): | ||||
|                         continue | ||||
|   | ||||
| @@ -183,6 +183,11 @@ class URLPatternReverse(TestCase): | ||||
|         self.assertEqual('/bump%2520map/includes/non_path_include/', | ||||
|                reverse('non_path_include', prefix='/bump%20map/')) | ||||
|  | ||||
|     def test_non_urlsafe_prefix_with_args(self): | ||||
|         # Regression for #20022 | ||||
|         self.assertEqual('/%7Eme/places/1/', | ||||
|                 reverse('places', args=[1], prefix='/~me/')) | ||||
|  | ||||
| class ResolverTests(unittest.TestCase): | ||||
|     def test_resolver_repr(self): | ||||
|         """ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user