Eric,

Thanks for the reply! django-template-utils does help some but, like
you say, you still end up writing a function and a custom node.

Is there a reason we couldn't add another template tag helper like
simple_tag or inclusion_tag? (I'll write the code and tests) Adding to
context seems (to me) to be a very common use case. With a helper like
this, I'd be able to write most of my template tags without needing to
drop down into the function/node paradigm. Maybe django does
eventually need to incorporate one of the third party solutions to
making template tags nice, but this could be a quick win that would
address a lot of the pain now.

Or maybe most people don't write lots of add_to_context type tags, or
the current third-party solutions are sufficient. If it isn't a common
problem for people, then it definitely doesn't belong in the core.

Thanks,
Alex


On Thu, Jul 22, 2010 at 10:23 AM, Eric Holscher <e...@ericholscher.com> wrote:
> I usually use James Bennett's django-template-utils for this purpose. It has
> a nice, simple implementation:
> http://bitbucket.org/ubernostrum/django-template-utils/src/tip/template_utils/nodes.py#cl-11
> It still requires the annoying Node/function split though.
> I know there have been a multitude of third party attempts at improving
> Django's template tags, and I think it's commonly agreed that they are one
> of the more boilerplatey bits. Sadly none of the third party libraries have
> really become defacto, so it's hard to think about including any of them in
> core. It does seem like a place that could use some expose either in the
> docs or in the general community though.
> Cheers,
> Eric
>
> On Thu, Jul 22, 2010 at 9:26 AM, Alex Robbins
> <alexander.j.robb...@gmail.com> wrote:
>>
>> I am a huge fan of simple_tag and inclusion_tag. They take a common
>> template tag use case and make it very easy to write. It seems like a
>> common use case that isn't represented is adding a value to context. I
>> find myself writing tags to add a variable to context very often and
>> it seems like we should be able to abstract this out.
>>
>> I'm thinking it would work like this, but would love to get feedback
>>
>> @register.add_to_context_tag
>> def tag_name():
>>    do_some_python()
>>    return context_value
>>
>> This would turn into a tag that worked like this:
>>
>> {% tag_name as variable %}
>>
>> Which puts context_value into the context as variable.
>> ------------------------
>>
>> It could optionally take takes_context, and work like this. This would
>> make context the required first argument to the function, like
>> inclusion_tag.
>>
>> @register.add_to_context_tag(takes_context=True)
>> def tag_name(context):
>>    do_some_python_that_needs_context(context)
>>    return context_value
>> ----------------------------------
>>
>> Finally, it could take arguments like simple_tag or inclusion tag.
>>
>> @register.add_to_context_tag
>> def tag_name(some, arguments, it, takes):
>>    some_func(some, arguments)
>>    return context_value
>>
>> which would yield a tag that worked like this:
>>
>> {% tag_name some arguments it takes as variable %}
>>
>> -----------------------------
>> Is this a use case other people have? Can anyone think of a better
>> name than add_to_context_tag?
>>
>> Thanks,
>> Alex
>>
>> --
>> 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.
>>
>
>
>
> --
> Eric Holscher
> Web Developer at The World Company in Lawrence, Ks
> http://ericholscher.com
>
> --
> 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.
>

-- 
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.

Reply via email to