Fixed #19280 -- Raised an explicit exception for the old {% url %} syntax.
This commit is contained in:
parent
690cac3a34
commit
d266919584
|
@ -398,6 +398,10 @@ class URLNode(Node):
|
||||||
|
|
||||||
view_name = self.view_name.resolve(context)
|
view_name = self.view_name.resolve(context)
|
||||||
|
|
||||||
|
if not view_name:
|
||||||
|
raise TemplateSyntaxError("'url' takes requires a non-empty first"
|
||||||
|
" argument. The syntax changed in Django 1.5, see the docs.")
|
||||||
|
|
||||||
# Try to look up the URL twice: once given the view name, and again
|
# Try to look up the URL twice: once given the view name, and again
|
||||||
# relative to what we guess is the "main" app. If they both fail,
|
# relative to what we guess is the "main" app. If they both fail,
|
||||||
# re-raise the NoReverseMatch unless we're using the
|
# re-raise the NoReverseMatch unless we're using the
|
||||||
|
|
|
@ -1035,6 +1035,16 @@ This will follow the normal :ref:`namespaced URL resolution strategy
|
||||||
<topics-http-reversing-url-namespaces>`, including using any hints provided
|
<topics-http-reversing-url-namespaces>`, including using any hints provided
|
||||||
by the context as to the current application.
|
by the context as to the current application.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Don't forget to put quotes around the function path or pattern name!
|
||||||
|
|
||||||
|
.. versionchanged:: 1.5
|
||||||
|
The first paramater used not to be quoted, which was inconsistent with
|
||||||
|
other template tags. Since Django 1.5, it is evaluated according to
|
||||||
|
the usual rules: it can be a quoted string or a variable that will be
|
||||||
|
looked up in the context.
|
||||||
|
|
||||||
.. templatetag:: verbatim
|
.. templatetag:: verbatim
|
||||||
|
|
||||||
verbatim
|
verbatim
|
||||||
|
|
|
@ -19,7 +19,8 @@ except ImportError: # Python 2
|
||||||
from urlparse import urljoin
|
from urlparse import urljoin
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
from django.template import base as template_base, RequestContext, Template, Context
|
from django.template import (base as template_base, Context, RequestContext,
|
||||||
|
Template, TemplateSyntaxError)
|
||||||
from django.core import urlresolvers
|
from django.core import urlresolvers
|
||||||
from django.template import loader
|
from django.template import loader
|
||||||
from django.template.loaders import app_directories, filesystem, cached
|
from django.template.loaders import app_directories, filesystem, cached
|
||||||
|
@ -364,6 +365,14 @@ class Templates(TestCase):
|
||||||
with self.assertRaises(urlresolvers.NoReverseMatch):
|
with self.assertRaises(urlresolvers.NoReverseMatch):
|
||||||
t.render(c)
|
t.render(c)
|
||||||
|
|
||||||
|
def test_url_explicit_exception_for_old_syntax(self):
|
||||||
|
# Regression test for #19280
|
||||||
|
t = Template('{% url path.to.view %}') # not quoted = old syntax
|
||||||
|
c = Context()
|
||||||
|
with self.assertRaisesRegexp(TemplateSyntaxError,
|
||||||
|
"The syntax changed in Django 1.5, see the docs."):
|
||||||
|
t.render(c)
|
||||||
|
|
||||||
@override_settings(DEBUG=True, TEMPLATE_DEBUG=True)
|
@override_settings(DEBUG=True, TEMPLATE_DEBUG=True)
|
||||||
def test_no_wrapped_exception(self):
|
def test_no_wrapped_exception(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue