Andreas Stuhlmüller wrote:
> Hi Adrian,
> 
> 
>>In your case, pass ITEM_NAMES[item.type]
>>to the template context.
> 
> 
> Easier said than done. The template was intended to do something like
> this:
> 
> {% for item in items %}
>     <li>{{ ITEM_NAMES[item.type] }}</li>
> {% endfor %}
> 
> Is it possible to achieve this without passing an additional item_types
> list to the context?
> 
> Andreas
> 
> 

Make a template tag.
http://www.djangoproject.com/documentation/templates_python/ , the
section 'Writing custom template tags'.
In a template tag library, you need to create a node class, a compile
function, and then register the compile function. Then use the load tag
to load up your template tag library.

----
Alternatively, the easy way to do this would be to use
template_decorators.py from the new-admin branch at

http://code.djangoproject.com/browser/django/branches/new-admin/django/core/template_decorators.py

Then in your case you can do:

@simple_tag
def lookup_name(names, item):
    return names[item.type]


and in your template:
{% load my_template_library %}
{% lookup_name ITEM_NAMES item %}

Of course if ITEM_NAMES is a constant you could import it in the tag
library and not pass it as an argument.

I'll submit template_decorators.py as a separate ticket.

Reply via email to