[1.5.x] Fixed #19392 -- Improved error for old-style url tags with dashes.

Thanks dloewenherz for the report.

Backport of 4951932 from master.
This commit is contained in:
Aymeric Augustin 2012-12-09 16:17:56 +01:00
parent fce779475e
commit d6bad2e9ea
2 changed files with 13 additions and 2 deletions

View File

@ -1262,7 +1262,12 @@ def url(parser, token):
if len(bits) < 2: if len(bits) < 2:
raise TemplateSyntaxError("'%s' takes at least one argument" raise TemplateSyntaxError("'%s' takes at least one argument"
" (path to a view)" % bits[0]) " (path to a view)" % bits[0])
viewname = parser.compile_filter(bits[1]) try:
viewname = parser.compile_filter(bits[1])
except TemplateSyntaxError as exc:
exc.args = (exc.args[0] + ". "
"The syntax of 'url' changed in Django 1.5, see the docs."),
raise
args = [] args = []
kwargs = {} kwargs = {}
asvar = None asvar = None

View File

@ -366,7 +366,7 @@ 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): def test_url_explicit_exception_for_old_syntax_at_run_time(self):
# Regression test for #19280 # Regression test for #19280
t = Template('{% url path.to.view %}') # not quoted = old syntax t = Template('{% url path.to.view %}') # not quoted = old syntax
c = Context() c = Context()
@ -374,6 +374,12 @@ class Templates(TestCase):
"The syntax changed in Django 1.5, see the docs."): "The syntax changed in Django 1.5, see the docs."):
t.render(c) t.render(c)
def test_url_explicit_exception_for_old_syntax_at_compile_time(self):
# Regression test for #19392
with self.assertRaisesRegexp(template.TemplateSyntaxError,
"The syntax of 'url' changed in Django 1.5, see the docs."):
t = Template('{% url my-view %}') # not a variable = old syntax
@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):
""" """