Ticket #6766: template_invalid__loop.diff

File template_invalid__loop.diff, 2.2 KB (added by guettli, 7 years ago)
  • tests/regressiontests/templates/tests.py

     
    759759
    760760            'invalidstr01': ('{{ var|default:"Foo" }}', {}, ('Foo','INVALID')),
    761761            'invalidstr02': ('{{ var|default_if_none:"Foo" }}', {}, ('','INVALID')),
    762             'invalidstr03': ('{% for v in var %}({{ v }}){% endfor %}', {}, ''),
     762            'invalidstr03': ('{% for v in var %}({{ v }}){% endfor %}', {}, ('', 'INVALID')),
    763763            'invalidstr04': ('{% if var %}Yes{% else %}No{% endif %}', {}, 'No'),
    764764            'invalidstr04': ('{% if var|default:"Foo" %}Yes{% else %}No{% endif %}', {}, 'Yes'),
    765765            'invalidstr05': ('{{ var }}', {}, ('', 'INVALID %s', 'var')),
  • django/template/__init__.py

     
    510510        self.filters = filters
    511511        self.var = Variable(var)
    512512
    513     def resolve(self, context, ignore_failures=False):
     513    def resolve(self, context, ignore_failures=False, raise_failures=False):
    514514        try:
    515515            obj = self.var.resolve(context)
    516516        except VariableDoesNotExist:
    517517            if ignore_failures:
    518518                obj = None
     519            elif raise_failures:
     520                raise
    519521            else:
    520522                if settings.TEMPLATE_STRING_IF_INVALID:
    521523                    global invalid_var_format_string
  • django/template/defaulttags.py

     
    114114            parentloop = {}
    115115        context.push()
    116116        try:
    117             values = self.sequence.resolve(context, True)
     117            values = self.sequence.resolve(context, raise_failures=True)
    118118        except VariableDoesNotExist:
     119            if settings.TEMPLATE_STRING_IF_INVALID:
     120                return settings.TEMPLATE_STRING_IF_INVALID % self.sequence
    119121            values = []
    120122        if values is None:
    121123            values = []
Back to Top