Commit 369b6fab authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Fixed #18169 -- NoReverseMatch not silenced if from block.super

parent 84909377
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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):
    """
+6 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
{% block content %}
  {% block error_here %}{% endblock %}
{% endblock %}
+11 −0
Original line number Diff line number Diff line
{% extends "included_base.html" %}

{% block content %}
  content
  {{ block.super }}
{% endblock %}

{% block error_here %}
  error here
  {% url "non_existing_url" %}
{% endblock %}
+9 −0
Original line number Diff line number Diff line
@@ -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()