diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2006-09-23 09:49:58 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2006-09-23 09:49:58 +0000 |
| commit | bd4c22be0b7c75ef8b6a1e623fdc2626f05ea194 (patch) | |
| tree | 95bd96fd11c3deadb53b5a0aa9d542948d42cfca | |
| parent | 670e8ab7040b3cb1f04d72a76b2c1fc9a4b3f457 (diff) | |
Fixed #2454 -- Make "ifchanged" tag work more predictably inside nested
for-loops. Thanks, dummy@habmalnefrage.de.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3800 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/template/defaulttags.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/templates/tests.py | 4 |
3 files changed, 7 insertions, 0 deletions
@@ -69,6 +69,7 @@ answer newbie questions, and generally made Django that much better: deric@monowerks.com dne@mayonnaise.net Maximillian Dornseif <md@hudora.de> + dummy@habmalnefrage.de Jeremy Dunck <http://dunck.us/> Andy Dustman <farcepest@gmail.com> Clint Ecker diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index daf7f41a85..07e579bf9d 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -129,6 +129,8 @@ class IfChangedNode(Node): self._last_seen = None def render(self, context): + if context.has_key('forloop') and context['forloop']['first']: + self._last_seen = None content = self.nodelist.render(context) if content != self._last_seen: firstloop = (self._last_seen == None) diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index b4ecb476ef..368a46b8fb 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -305,6 +305,10 @@ class Templates(unittest.TestCase): 'ifchanged01': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', { 'num': (1,2,3) }, '123'), 'ifchanged02': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', { 'num': (1,1,3) }, '13'), 'ifchanged03': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', { 'num': (1,1,1) }, '1'), + 'ifchanged04': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', { 'num': (1, 2, 3), 'numx': (2, 2, 2)}, '122232'), + 'ifchanged05': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', { 'num': (1, 1, 1), 'numx': (1, 2, 3)}, '1123123123'), + 'ifchanged06': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', { 'num': (1, 1, 1), 'numx': (2, 2, 2)}, '1222'), + 'ifchanged07': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% for y in numy %}{% ifchanged %}{{ y }}{% endifchanged %}{% endfor %}{% endfor %}{% endfor %}', { 'num': (1, 1, 1), 'numx': (2, 2, 2), 'numy': (3, 3, 3)}, '1233323332333'), ### IFEQUAL TAG ########################################################### 'ifequal01': ("{% ifequal a b %}yes{% endifequal %}", {"a": 1, "b": 2}, ""), |
