mirror of
https://github.com/django/django.git
synced 2025-08-04 02:48:35 +00:00
Fixed #23395 -- Limited line lengths to 119 characters.
This commit is contained in:
parent
84b0a8d2aa
commit
b1e33ceced
130 changed files with 5259 additions and 1501 deletions
|
@ -49,7 +49,10 @@ urlpatterns = [
|
|||
url(r'^inc(?P<outer>[0-9]+)/', include('urlpatterns_reverse.included_urls', namespace='inc-ns5')),
|
||||
url(r'^included/([0-9]+)/', include('urlpatterns_reverse.included_namespace_urls')),
|
||||
|
||||
url(r'^ns-outer/(?P<outer>[0-9]+)/', include('urlpatterns_reverse.included_namespace_urls', namespace='inc-outer')),
|
||||
url(
|
||||
r'^ns-outer/(?P<outer>[0-9]+)/',
|
||||
include('urlpatterns_reverse.included_namespace_urls', namespace='inc-outer')
|
||||
),
|
||||
|
||||
url(r'^\+\\\$\*/', include('urlpatterns_reverse.namespace_urls', namespace='special')),
|
||||
]
|
||||
|
|
|
@ -37,42 +37,104 @@ resolve_test_data = (
|
|||
# These entries are in the format: (path, url_name, app_name, namespace, view_name, func, args, kwargs)
|
||||
# Simple case
|
||||
('/normal/42/37/', 'normal-view', '', '', 'normal-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/view_class/42/37/', 'view-class', '', '', 'view-class', views.view_class_instance, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/included/normal/42/37/', 'inc-normal-view', '', '', 'inc-normal-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/included/view_class/42/37/', 'inc-view-class', '', '', 'inc-view-class', views.view_class_instance, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
(
|
||||
'/view_class/42/37/', 'view-class', '', '', 'view-class', views.view_class_instance, tuple(),
|
||||
{'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/included/normal/42/37/', 'inc-normal-view', '', '', 'inc-normal-view', views.empty_view, tuple(),
|
||||
{'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/included/view_class/42/37/', 'inc-view-class', '', '', 'inc-view-class', views.view_class_instance, tuple(),
|
||||
{'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
|
||||
# Unnamed args are dropped if you have *any* kwargs in a pattern
|
||||
('/mixed_args/42/37/', 'mixed-args', '', '', 'mixed-args', views.empty_view, tuple(), {'arg2': '37'}),
|
||||
('/included/mixed_args/42/37/', 'inc-mixed-args', '', '', 'inc-mixed-args', views.empty_view, tuple(), {'arg2': '37'}),
|
||||
('/included/12/mixed_args/42/37/', 'inc-mixed-args', '', '', 'inc-mixed-args', views.empty_view, tuple(), {'arg2': '37'}),
|
||||
(
|
||||
'/included/mixed_args/42/37/', 'inc-mixed-args', '', '', 'inc-mixed-args', views.empty_view, tuple(),
|
||||
{'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/included/12/mixed_args/42/37/', 'inc-mixed-args', '', '', 'inc-mixed-args', views.empty_view, tuple(),
|
||||
{'arg2': '37'}
|
||||
),
|
||||
|
||||
# Unnamed views should have None as the url_name. Regression data for #21157.
|
||||
('/unnamed/normal/42/37/', None, '', '', 'urlpatterns_reverse.views.empty_view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/unnamed/view_class/42/37/', None, '', '', 'urlpatterns_reverse.views.ViewClass', views.view_class_instance, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
(
|
||||
'/unnamed/normal/42/37/', None, '', '', 'urlpatterns_reverse.views.empty_view', views.empty_view, tuple(),
|
||||
{'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/unnamed/view_class/42/37/', None, '', '', 'urlpatterns_reverse.views.ViewClass', views.view_class_instance,
|
||||
tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
|
||||
# If you have no kwargs, you get an args list.
|
||||
('/no_kwargs/42/37/', 'no-kwargs', '', '', 'no-kwargs', views.empty_view, ('42', '37'), {}),
|
||||
('/included/no_kwargs/42/37/', 'inc-no-kwargs', '', '', 'inc-no-kwargs', views.empty_view, ('42', '37'), {}),
|
||||
('/included/12/no_kwargs/42/37/', 'inc-no-kwargs', '', '', 'inc-no-kwargs', views.empty_view, ('12', '42', '37'), {}),
|
||||
(
|
||||
'/included/12/no_kwargs/42/37/', 'inc-no-kwargs', '', '', 'inc-no-kwargs', views.empty_view,
|
||||
('12', '42', '37'), {}
|
||||
),
|
||||
|
||||
# Namespaces
|
||||
('/test1/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns1', 'test-ns1:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/included/test3/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns3', 'test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/ns-included1/normal/42/37/', 'inc-normal-view', '', 'inc-ns1', 'inc-ns1:inc-normal-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/included/test3/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns3', 'test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/default/inner/42/37/', 'urlobject-view', 'testapp', 'testapp', 'testapp:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/other2/inner/42/37/', 'urlobject-view', 'nodefault', 'other-ns2', 'other-ns2:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/other1/inner/42/37/', 'urlobject-view', 'nodefault', 'other-ns1', 'other-ns1:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
(
|
||||
'/test1/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns1', 'test-ns1:urlobject-view',
|
||||
views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/included/test3/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns3', 'test-ns3:urlobject-view',
|
||||
views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/ns-included1/normal/42/37/', 'inc-normal-view', '', 'inc-ns1', 'inc-ns1:inc-normal-view', views.empty_view,
|
||||
tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/included/test3/inner/42/37/', 'urlobject-view', 'testapp', 'test-ns3', 'test-ns3:urlobject-view',
|
||||
views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/default/inner/42/37/', 'urlobject-view', 'testapp', 'testapp', 'testapp:urlobject-view', views.empty_view,
|
||||
tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/other2/inner/42/37/', 'urlobject-view', 'nodefault', 'other-ns2', 'other-ns2:urlobject-view',
|
||||
views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/other1/inner/42/37/', 'urlobject-view', 'nodefault', 'other-ns1', 'other-ns1:urlobject-view',
|
||||
views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
|
||||
# Nested namespaces
|
||||
('/ns-included1/test3/inner/42/37/', 'urlobject-view', 'testapp', 'inc-ns1:test-ns3', 'inc-ns1:test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/ns-included1/ns-included4/ns-included2/test3/inner/42/37/', 'urlobject-view', 'testapp', 'inc-ns1:inc-ns4:inc-ns2:test-ns3', 'inc-ns1:inc-ns4:inc-ns2:test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/app-included/test3/inner/42/37/', 'urlobject-view', 'inc-app:testapp', 'inc-app:test-ns3', 'inc-app:test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
('/app-included/ns-included4/ns-included2/test3/inner/42/37/', 'urlobject-view', 'inc-app:testapp', 'inc-app:inc-ns4:inc-ns2:test-ns3', 'inc-app:inc-ns4:inc-ns2:test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}),
|
||||
(
|
||||
'/ns-included1/test3/inner/42/37/', 'urlobject-view', 'testapp', 'inc-ns1:test-ns3',
|
||||
'inc-ns1:test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/ns-included1/ns-included4/ns-included2/test3/inner/42/37/', 'urlobject-view', 'testapp',
|
||||
'inc-ns1:inc-ns4:inc-ns2:test-ns3', 'inc-ns1:inc-ns4:inc-ns2:test-ns3:urlobject-view', views.empty_view,
|
||||
tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/app-included/test3/inner/42/37/', 'urlobject-view', 'inc-app:testapp', 'inc-app:test-ns3',
|
||||
'inc-app:test-ns3:urlobject-view', views.empty_view, tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
(
|
||||
'/app-included/ns-included4/ns-included2/test3/inner/42/37/', 'urlobject-view', 'inc-app:testapp',
|
||||
'inc-app:inc-ns4:inc-ns2:test-ns3', 'inc-app:inc-ns4:inc-ns2:test-ns3:urlobject-view', views.empty_view,
|
||||
tuple(), {'arg1': '42', 'arg2': '37'}
|
||||
),
|
||||
|
||||
# Namespaces capturing variables
|
||||
('/inc70/', 'inner-nothing', '', 'inc-ns5', 'inc-ns5:inner-nothing', views.empty_view, tuple(), {'outer': '70'}),
|
||||
('/inc78/extra/foobar/', 'inner-extra', '', 'inc-ns5', 'inc-ns5:inner-extra', views.empty_view, tuple(), {'outer': '78', 'extra': 'foobar'}),
|
||||
(
|
||||
'/inc78/extra/foobar/', 'inner-extra', '', 'inc-ns5', 'inc-ns5:inner-extra', views.empty_view, tuple(),
|
||||
{'outer': '78', 'extra': 'foobar'}
|
||||
),
|
||||
)
|
||||
|
||||
test_data = (
|
||||
|
@ -122,7 +184,10 @@ test_data = (
|
|||
('price3', '/price/$10/', ['10'], {}),
|
||||
('product', '/product/chocolate+($2.00)/', [], {'price': '2.00', 'product': 'chocolate'}),
|
||||
('headlines', '/headlines/2007.5.21/', [], dict(year=2007, month=5, day=21)),
|
||||
('windows', r'/windows_path/C:%5CDocuments%20and%20Settings%5Cspam/', [], dict(drive_name='C', path=r'Documents and Settings\spam')),
|
||||
(
|
||||
'windows', r'/windows_path/C:%5CDocuments%20and%20Settings%5Cspam/', [],
|
||||
dict(drive_name='C', path=r'Documents and Settings\spam')
|
||||
),
|
||||
('special', r'/special_chars/~@+%5C$*%7C/', [r'~@+\$*|'], {}),
|
||||
('special', r'/special_chars/some%20resource/', [r'some resource'], {}),
|
||||
('special', r'/special_chars/10%25%20complete/', [r'10% complete'], {}),
|
||||
|
@ -367,7 +432,13 @@ class ResolverTests(unittest.TestCase):
|
|||
# make sure we at least matched the root ('/') url resolver:
|
||||
self.assertIn('tried', e.args[0])
|
||||
tried = e.args[0]['tried']
|
||||
self.assertEqual(len(e.args[0]['tried']), len(url_types_names), 'Wrong number of tried URLs returned. Expected %s, got %s.' % (len(url_types_names), len(e.args[0]['tried'])))
|
||||
self.assertEqual(
|
||||
len(e.args[0]['tried']),
|
||||
len(url_types_names),
|
||||
'Wrong number of tried URLs returned. Expected %s, got %s.' % (
|
||||
len(url_types_names), len(e.args[0]['tried'])
|
||||
)
|
||||
)
|
||||
for tried, expected in zip(e.args[0]['tried'], url_types_names):
|
||||
for t, e in zip(tried, expected):
|
||||
self.assertIsInstance(t, e['type']), str('%s is not an instance of %s') % (t, e['type'])
|
||||
|
@ -375,7 +446,11 @@ class ResolverTests(unittest.TestCase):
|
|||
if not e['name']:
|
||||
self.assertIsNone(t.name, 'Expected no URL name but found %s.' % t.name)
|
||||
else:
|
||||
self.assertEqual(t.name, e['name'], 'Wrong URL name. Expected "%s", got "%s".' % (e['name'], t.name))
|
||||
self.assertEqual(
|
||||
t.name,
|
||||
e['name'],
|
||||
'Wrong URL name. Expected "%s", got "%s".' % (e['name'], t.name)
|
||||
)
|
||||
|
||||
|
||||
@override_settings(ROOT_URLCONF='urlpatterns_reverse.reverse_lazy_urls')
|
||||
|
@ -535,35 +610,46 @@ class NamespaceTests(SimpleTestCase):
|
|||
"Namespace defaults to app_name when including a (pattern, app_name) 2-tuple"
|
||||
self.assertEqual('/new-default/inner/', reverse('newapp:urlobject-view'))
|
||||
self.assertEqual('/new-default/inner/37/42/', reverse('newapp:urlobject-view', args=[37, 42]))
|
||||
self.assertEqual('/new-default/inner/42/37/', reverse('newapp:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}))
|
||||
self.assertEqual(
|
||||
'/new-default/inner/42/37/', reverse('newapp:urlobject-view', kwargs={'arg1': 42, 'arg2': 37})
|
||||
)
|
||||
self.assertEqual('/new-default/inner/+%5C$*/', reverse('newapp:urlobject-special-view'))
|
||||
|
||||
def test_embedded_namespace_object(self):
|
||||
"Namespaces can be installed anywhere in the URL pattern tree"
|
||||
self.assertEqual('/included/test3/inner/', reverse('test-ns3:urlobject-view'))
|
||||
self.assertEqual('/included/test3/inner/37/42/', reverse('test-ns3:urlobject-view', args=[37, 42]))
|
||||
self.assertEqual('/included/test3/inner/42/37/', reverse('test-ns3:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}))
|
||||
self.assertEqual(
|
||||
'/included/test3/inner/42/37/', reverse('test-ns3:urlobject-view', kwargs={'arg1': 42, 'arg2': 37})
|
||||
)
|
||||
self.assertEqual('/included/test3/inner/+%5C$*/', reverse('test-ns3:urlobject-special-view'))
|
||||
|
||||
def test_namespace_pattern(self):
|
||||
"Namespaces can be applied to include()'d urlpatterns"
|
||||
self.assertEqual('/ns-included1/normal/', reverse('inc-ns1:inc-normal-view'))
|
||||
self.assertEqual('/ns-included1/normal/37/42/', reverse('inc-ns1:inc-normal-view', args=[37, 42]))
|
||||
self.assertEqual('/ns-included1/normal/42/37/', reverse('inc-ns1:inc-normal-view', kwargs={'arg1': 42, 'arg2': 37}))
|
||||
self.assertEqual(
|
||||
'/ns-included1/normal/42/37/', reverse('inc-ns1:inc-normal-view', kwargs={'arg1': 42, 'arg2': 37})
|
||||
)
|
||||
self.assertEqual('/ns-included1/+%5C$*/', reverse('inc-ns1:inc-special-view'))
|
||||
|
||||
def test_app_name_pattern(self):
|
||||
"Namespaces can be applied to include()'d urlpatterns that set an app_name attribute"
|
||||
self.assertEqual('/app-included1/normal/', reverse('app-ns1:inc-normal-view'))
|
||||
self.assertEqual('/app-included1/normal/37/42/', reverse('app-ns1:inc-normal-view', args=[37, 42]))
|
||||
self.assertEqual('/app-included1/normal/42/37/', reverse('app-ns1:inc-normal-view', kwargs={'arg1': 42, 'arg2': 37}))
|
||||
self.assertEqual(
|
||||
'/app-included1/normal/42/37/', reverse('app-ns1:inc-normal-view', kwargs={'arg1': 42, 'arg2': 37})
|
||||
)
|
||||
self.assertEqual('/app-included1/+%5C$*/', reverse('app-ns1:inc-special-view'))
|
||||
|
||||
def test_namespace_pattern_with_variable_prefix(self):
|
||||
"When using an include with namespaces when there is a regex variable in front of it"
|
||||
self.assertEqual('/ns-outer/42/normal/', reverse('inc-outer:inc-normal-view', kwargs={'outer': 42}))
|
||||
self.assertEqual('/ns-outer/42/normal/', reverse('inc-outer:inc-normal-view', args=[42]))
|
||||
self.assertEqual('/ns-outer/42/normal/37/4/', reverse('inc-outer:inc-normal-view', kwargs={'outer': 42, 'arg1': 37, 'arg2': 4}))
|
||||
self.assertEqual(
|
||||
'/ns-outer/42/normal/37/4/',
|
||||
reverse('inc-outer:inc-normal-view', kwargs={'outer': 42, 'arg1': 37, 'arg2': 4})
|
||||
)
|
||||
self.assertEqual('/ns-outer/42/normal/37/4/', reverse('inc-outer:inc-normal-view', args=[42, 37, 4]))
|
||||
self.assertEqual('/ns-outer/42/+%5C$*/', reverse('inc-outer:inc-special-view', kwargs={'outer': 42}))
|
||||
self.assertEqual('/ns-outer/42/+%5C$*/', reverse('inc-outer:inc-special-view', args=[42]))
|
||||
|
@ -572,15 +658,30 @@ class NamespaceTests(SimpleTestCase):
|
|||
"Namespaces can be embedded"
|
||||
self.assertEqual('/ns-included1/test3/inner/', reverse('inc-ns1:test-ns3:urlobject-view'))
|
||||
self.assertEqual('/ns-included1/test3/inner/37/42/', reverse('inc-ns1:test-ns3:urlobject-view', args=[37, 42]))
|
||||
self.assertEqual('/ns-included1/test3/inner/42/37/', reverse('inc-ns1:test-ns3:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}))
|
||||
self.assertEqual(
|
||||
'/ns-included1/test3/inner/42/37/',
|
||||
reverse('inc-ns1:test-ns3:urlobject-view', kwargs={'arg1': 42, 'arg2': 37})
|
||||
)
|
||||
self.assertEqual('/ns-included1/test3/inner/+%5C$*/', reverse('inc-ns1:test-ns3:urlobject-special-view'))
|
||||
|
||||
def test_nested_namespace_pattern(self):
|
||||
"Namespaces can be nested"
|
||||
self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view'))
|
||||
self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/37/42/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view', args=[37, 42]))
|
||||
self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/42/37/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}))
|
||||
self.assertEqual('/ns-included1/ns-included4/ns-included1/test3/inner/+%5C$*/', reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-special-view'))
|
||||
self.assertEqual(
|
||||
'/ns-included1/ns-included4/ns-included1/test3/inner/',
|
||||
reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view')
|
||||
)
|
||||
self.assertEqual(
|
||||
'/ns-included1/ns-included4/ns-included1/test3/inner/37/42/',
|
||||
reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view', args=[37, 42])
|
||||
)
|
||||
self.assertEqual(
|
||||
'/ns-included1/ns-included4/ns-included1/test3/inner/42/37/',
|
||||
reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-view', kwargs={'arg1': 42, 'arg2': 37})
|
||||
)
|
||||
self.assertEqual(
|
||||
'/ns-included1/ns-included4/ns-included1/test3/inner/+%5C$*/',
|
||||
reverse('inc-ns1:inc-ns4:inc-ns1:test-ns3:urlobject-special-view')
|
||||
)
|
||||
|
||||
def test_app_lookup_object(self):
|
||||
"A default application namespace can be used for lookup"
|
||||
|
@ -592,9 +693,17 @@ class NamespaceTests(SimpleTestCase):
|
|||
def test_app_lookup_object_with_default(self):
|
||||
"A default application namespace is sensitive to the 'current' app can be used for lookup"
|
||||
self.assertEqual('/included/test3/inner/', reverse('testapp:urlobject-view', current_app='test-ns3'))
|
||||
self.assertEqual('/included/test3/inner/37/42/', reverse('testapp:urlobject-view', args=[37, 42], current_app='test-ns3'))
|
||||
self.assertEqual('/included/test3/inner/42/37/', reverse('testapp:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}, current_app='test-ns3'))
|
||||
self.assertEqual('/included/test3/inner/+%5C$*/', reverse('testapp:urlobject-special-view', current_app='test-ns3'))
|
||||
self.assertEqual(
|
||||
'/included/test3/inner/37/42/',
|
||||
reverse('testapp:urlobject-view', args=[37, 42], current_app='test-ns3')
|
||||
)
|
||||
self.assertEqual(
|
||||
'/included/test3/inner/42/37/',
|
||||
reverse('testapp:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}, current_app='test-ns3')
|
||||
)
|
||||
self.assertEqual(
|
||||
'/included/test3/inner/+%5C$*/', reverse('testapp:urlobject-special-view', current_app='test-ns3')
|
||||
)
|
||||
|
||||
def test_app_lookup_object_without_default(self):
|
||||
"An application namespace without a default is sensitive to the 'current' app can be used for lookup"
|
||||
|
@ -604,20 +713,30 @@ class NamespaceTests(SimpleTestCase):
|
|||
self.assertEqual('/other2/inner/+%5C$*/', reverse('nodefault:urlobject-special-view'))
|
||||
|
||||
self.assertEqual('/other1/inner/', reverse('nodefault:urlobject-view', current_app='other-ns1'))
|
||||
self.assertEqual('/other1/inner/37/42/', reverse('nodefault:urlobject-view', args=[37, 42], current_app='other-ns1'))
|
||||
self.assertEqual('/other1/inner/42/37/', reverse('nodefault:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}, current_app='other-ns1'))
|
||||
self.assertEqual(
|
||||
'/other1/inner/37/42/', reverse('nodefault:urlobject-view', args=[37, 42], current_app='other-ns1')
|
||||
)
|
||||
self.assertEqual(
|
||||
'/other1/inner/42/37/',
|
||||
reverse('nodefault:urlobject-view', kwargs={'arg1': 42, 'arg2': 37}, current_app='other-ns1')
|
||||
)
|
||||
self.assertEqual('/other1/inner/+%5C$*/', reverse('nodefault:urlobject-special-view', current_app='other-ns1'))
|
||||
|
||||
def test_special_chars_namespace(self):
|
||||
self.assertEqual('/+%5C$*/included/normal/', reverse('special:inc-normal-view'))
|
||||
self.assertEqual('/+%5C$*/included/normal/37/42/', reverse('special:inc-normal-view', args=[37, 42]))
|
||||
self.assertEqual('/+%5C$*/included/normal/42/37/', reverse('special:inc-normal-view', kwargs={'arg1': 42, 'arg2': 37}))
|
||||
self.assertEqual(
|
||||
'/+%5C$*/included/normal/42/37/',
|
||||
reverse('special:inc-normal-view', kwargs={'arg1': 42, 'arg2': 37})
|
||||
)
|
||||
self.assertEqual('/+%5C$*/included/+%5C$*/', reverse('special:inc-special-view'))
|
||||
|
||||
def test_namespaces_with_variables(self):
|
||||
"Namespace prefixes can capture variables: see #15900"
|
||||
self.assertEqual('/inc70/', reverse('inc-ns5:inner-nothing', kwargs={'outer': '70'}))
|
||||
self.assertEqual('/inc78/extra/foobar/', reverse('inc-ns5:inner-extra', kwargs={'outer': '78', 'extra': 'foobar'}))
|
||||
self.assertEqual(
|
||||
'/inc78/extra/foobar/', reverse('inc-ns5:inner-extra', kwargs={'outer': '78', 'extra': 'foobar'})
|
||||
)
|
||||
self.assertEqual('/inc70/', reverse('inc-ns5:inner-nothing', args=['70']))
|
||||
self.assertEqual('/inc78/extra/foobar/', reverse('inc-ns5:inner-extra', args=['78', 'foobar']))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue