summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorPreston Holmes <preston@ptone.com>2013-02-24 08:10:33 -0800
committerPreston Holmes <preston@ptone.com>2013-02-24 08:10:33 -0800
commite369dc28075b4331c125494fe7bd73855d73a0ce (patch)
tree3c53b59753c0c48c6e1b4e35573d22fcfcbd36d9 /django
parentd5462596478992075fd04705fedd6a3cca49fae8 (diff)
parent636c45fc58bcc19d7669a739ccd05ff475381f48 (diff)
Merge pull request #832 from chrismedrela/ticket19890
Fixed #19890 -- ifchanged templatetag rendered its content twice
Diffstat (limited to 'django')
-rw-r--r--django/template/defaulttags.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 7c0772cda8..dbb5b5a0cb 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -223,6 +223,7 @@ class IfChangedNode(Node):
if self not in state_frame:
state_frame[self] = None
+ nodelist_true_output = None
try:
if self._varlist:
# Consider multiple parameters. This automatically behaves
@@ -230,13 +231,13 @@ class IfChangedNode(Node):
compare_to = [var.resolve(context, True) for var in self._varlist]
else:
# The "{% ifchanged %}" syntax (without any variables) compares the rendered output.
- compare_to = self.nodelist_true.render(context)
+ compare_to = nodelist_true_output = self.nodelist_true.render(context)
except VariableDoesNotExist:
compare_to = None
if compare_to != state_frame[self]:
state_frame[self] = compare_to
- return self.nodelist_true.render(context)
+ return nodelist_true_output or self.nodelist_true.render(context) # render true block if not already rendered
elif self.nodelist_false:
return self.nodelist_false.render(context)
return ''