mirror of
https://github.com/django/django.git
synced 2024-11-29 14:46:18 +01:00
Fixed #18169 -- NoReverseMatch not silenced if from block.super
This commit is contained in:
parent
84909377f2
commit
369b6fab25
@ -75,8 +75,7 @@ class Resolver404(Http404):
|
||||
pass
|
||||
|
||||
class NoReverseMatch(Exception):
|
||||
# Don't make this raise an error when used in a template.
|
||||
silent_variable_failure = True
|
||||
pass
|
||||
|
||||
def get_callable(lookup_view, can_fail=False):
|
||||
"""
|
||||
|
@ -616,6 +616,12 @@ Miscellaneous
|
||||
stored as ``null``. Previously, storing a ``blank`` value in a field which
|
||||
did not allow ``null`` would cause a database exception at runtime.
|
||||
|
||||
* If a :class:`~django.core.urlresolvers.NoReverseMatch` exception is risen
|
||||
from a method when rendering a template it is not silenced. For example
|
||||
{{ obj.view_href }} will cause template rendering to fail if view_href()
|
||||
raises NoReverseMatch. There is no change to {% url %} tag, it causes
|
||||
template rendering to fail like always when NoReverseMatch is risen.
|
||||
|
||||
Features deprecated in 1.6
|
||||
==========================
|
||||
|
||||
|
3
tests/template_tests/templates/included_base.html
Normal file
3
tests/template_tests/templates/included_base.html
Normal file
@ -0,0 +1,3 @@
|
||||
{% block content %}
|
||||
{% block error_here %}{% endblock %}
|
||||
{% endblock %}
|
11
tests/template_tests/templates/included_content.html
Normal file
11
tests/template_tests/templates/included_content.html
Normal file
@ -0,0 +1,11 @@
|
||||
{% extends "included_base.html" %}
|
||||
|
||||
{% block content %}
|
||||
content
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
{% block error_here %}
|
||||
error here
|
||||
{% url "non_existing_url" %}
|
||||
{% endblock %}
|
@ -444,6 +444,15 @@ class Templates(TestCase):
|
||||
output = template.render(Context({}))
|
||||
self.assertEqual(output, '1st time')
|
||||
|
||||
def test_super_errors(self):
|
||||
"""
|
||||
Test behavior of the raise errors into included blocks.
|
||||
See #18169
|
||||
"""
|
||||
t = loader.get_template('included_content.html')
|
||||
with self.assertRaises(urlresolvers.NoReverseMatch):
|
||||
t.render(Context({}))
|
||||
|
||||
def test_templates(self):
|
||||
template_tests = self.get_template_tests()
|
||||
filter_tests = filters.get_filter_tests()
|
||||
|
Loading…
Reference in New Issue
Block a user