summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarten Kenbeek <marten.knbk@gmail.com>2015-10-26 14:28:05 +0100
committerTim Graham <timograham@gmail.com>2015-10-26 10:42:20 -0400
commit34af2bc523321da828a02bcf8f225ec393ed75cf (patch)
tree2affe2d857ee25d31a8732904e2f58e4ca57c457
parent23073f964442ff754a28cb218e2f37425ebaef15 (diff)
Fixed #25610 -- Reverted removal of request.current_app in {% url %} tag.
The deprecation removal in 5e450c52aafb62b9d83c8ac08892e0b92cbec4aa removed too much.
-rw-r--r--django/template/defaulttags.py7
-rw-r--r--tests/template_tests/syntax_tests/test_url.py20
2 files changed, 25 insertions, 2 deletions
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 08ef976be1..2934f5756e 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -434,9 +434,12 @@ class URLNode(Node):
}
view_name = self.view_name.resolve(context)
try:
- current_app = context.request.resolver_match.namespace
+ current_app = context.request.current_app
except AttributeError:
- current_app = None
+ try:
+ current_app = context.request.resolver_match.namespace
+ except AttributeError:
+ current_app = None
# Try to look up the URL. If it fails, raise NoReverseMatch unless the
# {% url ... as var %} construct is used, in which case return nothing.
url = ''
diff --git a/tests/template_tests/syntax_tests/test_url.py b/tests/template_tests/syntax_tests/test_url.py
index 689ffc8c08..53b3f25518 100644
--- a/tests/template_tests/syntax_tests/test_url.py
+++ b/tests/template_tests/syntax_tests/test_url.py
@@ -251,3 +251,23 @@ class UrlTagTests(SimpleTestCase):
context = RequestContext(request)
output = template.render(context)
self.assertEqual(output, '/ns2/named-client/42/')
+
+ @setup({'url-namespace-no-current-app': '{% url "app:named.client" 42 %}'})
+ def test_url_namespace_no_current_app(self):
+ request = RequestFactory().get('/')
+ request.resolver_match = resolve('/ns1/')
+ request.current_app = None
+ template = self.engine.get_template('url-namespace-no-current-app')
+ context = RequestContext(request)
+ output = template.render(context)
+ self.assertEqual(output, '/ns2/named-client/42/')
+
+ @setup({'url-namespace-explicit-current-app': '{% url "app:named.client" 42 %}'})
+ def test_url_namespace_explicit_current_app(self):
+ request = RequestFactory().get('/')
+ request.resolver_match = resolve('/ns1/')
+ request.current_app = 'app'
+ template = self.engine.get_template('url-namespace-explicit-current-app')
+ context = RequestContext(request)
+ output = template.render(context)
+ self.assertEqual(output, '/ns2/named-client/42/')