I recently ran into this problem too for the first time. Essentially this boils down to my not being able to use a templatetag in a loop in some cases. What is the simple workaround that I'm missing?
-Steve On May 5, 2:12 pm, Apreche <apre...@gmail.com> wrote: > I had a really strange bug in one of my custom template tags today. It > took me the entire morning to figure it out, but I finally did. I'm > not sure if it's a bug or a feature, but I wanted to make a post to > help the next person who has this same problem. > > Let's pretend you make a custom template tag foo. The render method > for foo is in a class FooNode, and you pass it a person from the > context. > > {% foo persona %} > {% foo personb %} > > Then, as is common, you have a list of people that you render with a > loop in the template. > > {% for person in people %} > {% foo person %} > {% endfor %} > > It turns out that when a template tag stands alone, the __init__ of > FooNode will be called each time the template tag appears. However, > when the template tag is inside of a loop, the __init__ of the FooNode > is only called once. That single instance of FooNode sticks around, > and it's render method is called over and over as the loop goes > around. > > This doesn't seem like that big of a deal. However, my template tag > was written in such a way that data members of FooNode were being set > in the __init__ and reused in the render(). Because the initialization > only happened the first time through the loop, the template tag always > rendered as if it was for the first person in the list. Those data > members carried over to subsequent renders because the Node was not > reinitialized. I managed to fix it, but be aware. If your template > tags are behaving strangely when they are in loops, this is probably > the issue. > > -- > You received this message because you are subscribed to the Google Groups > "Django developers" group. > To post to this group, send email to django-develop...@googlegroups.com. > To unsubscribe from this group, send email to > django-developers+unsubscr...@googlegroups.com. > For more options, visit this group > athttp://groups.google.com/group/django-developers?hl=en. -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.