On May 23, 5:37 am, stevedegrace <degr...@gmail.com> wrote:
> I developed a custom tag to look up the country of a certain IP
> address using an IP to country database. It's sort of rough and ready,
> but it should work. The idea is that you read the comment.ip_address,
> feed it to the {% country %} tag, which then spits out the two letter
> country code. The interesting thing is that the tag works once and
> only once per page load if it has to render a variable. All subsequent
> calls raise template.VariableDoesNotExist in the code below.
>
> The interesting thing is that if you strip out the ability to
> recognize an IP as a string and make it just render variables, and you
> bind self.ip as a Variable object in the __init__ method and then try
> to call its render method in the CountryNode's render method, it
> actually raises AttributeError and claims that Variable object has no
> attribute render. Weird! FYI, I'm using Django 1.2. Anyone have any
> thoughts about what the heck is going on?

Avoid rebinding self.ip in the render method and it should work just
fine.

> Here's the Python code:
(snip imports)
> class CountryNode(template.Node):
>     def __init__(self, ip):
>         self.ip = ip
>
>     def render(self, context):
>         if self.ip[0] in '\'"':
>             self.ip = self.ip.strip('\'"')

don't rebind self.ip here.

>         else:
>             try:
>                 self.ip = Variable(self.ip).resolve(context)

don't rebind it here neither

You want to work on local variable, definitly.

HTH

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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.

Reply via email to