#15791: New feature: callable objects can signal that templates should never
call
them
-------------------------+--------------------------------
Reporter: ejucovy | Owner: nobody
Type: New feature | Status: new
Milestone: | Component: Template system
Version: SVN | Severity: Normal
Keywords: | Triage Stage: Unreviewed
Has patch: 1 |
-------------------------+--------------------------------
I have a Python class that contains some data, and also has a `__call__`
method, e.g.:
{{{
#!python
class Doodad(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __call__(self, a, b):
return (self.x + a, self.y + b)
}}}
I'd like to be able to use instances of this class in my templates, to
reference their attributes:
{{{
#!python
from django.template import Template, Context
ctx = Context(dict(my_doodad=Doodad(5, 10)))
Template("My doodad's x value is {{my_doodad.x}}").render(ctx)
}}}
But because the object has a `__call__` method which takes more than zero
arguments, Django's template system will try to call the method, catch the
resulting !TypeError, and replace the object with
`settings.TEMPLATE_STRING_IF_INVALID`.
With the attached patch, callable objects can set an attribute to signal
that Django's template system should leave them alone altogether.
This is analogous to the `alters_data` attribute, which signals that
Django's template system should replace the object with
`settings.TEMPLATE_STRING_IF_INVALID` without trying to call it.
--
Ticket URL: <http://code.djangoproject.com/ticket/15791>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.