I don't know if you have other problems, but the following is invalid python:
val = token.split_contents()1 You may have meant: val = token.split_contents()[1] Which gets you the second element of the list returned by split_contents(). If you wanted the first element, change the 1 to a 0. Bill On Fri, Jun 4, 2010 at 12:42 PM, __alex__ <coopk...@gmail.com> wrote: > Hi all, > > I've been trying to figure this out for hours and hours, but I simply > can't understand how to make it work. > > Now, we have a very simple custom template tag. Let's say that we want > the template tag to take as a parameter a filtered variable. A very > simple implementation of my template tag is : > > register = template.Library() > > class Test(template.Node): > def __init__(self,val): > self.val = val > def render(self,context): > print("VALUE=%s" % self.val) > if self.val.__class__.__name__ == "FilterExpression": > self.val = self.val.resolve(context) > return self.val > > @register.tag('test') > def test(parser,token): > > print("Test is executed") > > val = token.split_contents()1 > val = parser.compile_filter(val) > > return Test(val) > > This just gets the value and resolves the filter. A simple template to > test this is : > > {% for p in test_list %} > {% test p|first %} - {%test p|last%} --- {{p}}<br/> > {% endfor %} > > The test_list is : > (("First1","Last1"),("First2","Last2"),("First3","Last3")) > > So from the code I've written so far I would expect this silly > template tag to iterate through and print out the first and last > element of the tuples. > > Though, this is the output of the template : > > First1 - Last1 --- ('First1', 'Last1') > First1 - Last1 --- ('First2', 'Last2') > First1 - Last1 --- ('First3', 'Last3') > > And this is what I get in my console: > > Test is executed > Test is executed > VALUE=p|first > VALUE=p|last > VALUE=First1 > VALUE=Last1 > VALUE=First1 > VALUE=Last1 > > OK, so what I understand so far is that the template player calls the > test template tag the first two times. Then, somehow it creates new > Test objects and feeds them with the result of the first execution. > > I am certainly not a django expert, so could someone be kind enough to > explain me what on earth is this thing doing and how to get around it > please ? :) > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.