Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Refs #13167 -- Corrected a regression in the way non-existent variabl…

…es are handled by {% if %} tags. Thanks to ohmi2 for pointing out the regression in 1.2, and Karen for the patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12954 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 2cebe4395e9ed345bbbe346b91842b4c97ffcfc7 1 parent 55c31fb
@freakboy3742 freakboy3742 authored
View
7 django/template/defaulttags.py
@@ -243,7 +243,12 @@ def __iter__(self):
yield node
def render(self, context):
- if self.var.eval(context):
+ try:
+ var = self.var.eval(context)
+ except VariableDoesNotExist:
+ var = None
+
+ if var:
return self.nodelist_true.render(context)
else:
return self.nodelist_false.render(context)
View
6 tests/regressiontests/templates/tests.py
@@ -782,6 +782,12 @@ def get_template_tests(self):
'if-tag-error11': ("{% if 1 == %}yes{% endif %}", {}, template.TemplateSyntaxError),
'if-tag-error12': ("{% if a not b %}yes{% endif %}", {}, template.TemplateSyntaxError),
+ # Non-existent args
+ 'if-tag-badarg01':("{% if x|default_if_none:y %}yes{% endif %}", {}, ''),
+ 'if-tag-badarg02':("{% if x|default_if_none:y %}yes{% endif %}", {'y': 0}, ''),
+ 'if-tag-badarg03':("{% if x|default_if_none:y %}yes{% endif %}", {'y': 1}, 'yes'),
+ 'if-tag-badarg04':("{% if x|default_if_none:y %}yes{% else %}no{% endif %}", {}, 'no'),
+
# Additional, more precise parsing tests are in SmartIfTests
### IFCHANGED TAG #########################################################
Please sign in to comment.
Something went wrong with that request. Please try again.