I use it too.

Maybe it would be nice to document it somewhere.


Cheers,
  Tom


Dne Tue, 24 Sep 2013 10:59:27 -0700 (PDT)
Warren Smith <war...@wandrsmith.net> napsal(a):

> On occasion, I've used the following technique in my django templates:
> 
> # parent.html 
> 
> {% block someblock %}
> …stuff…
>   {% if cool_optional_feature_is_enabled %}
>     …optional stuff...
>   {% endif %}
> …stuff...
> {% endblock %}
> 
> 
> # child.html
> {% extends "parent.html" %}
> 
> {% block someblock %}
>   {% with True as cool_optional_feature_is_enabled %}
>     {{ block.super }}
>   {% endwith %}
> {% endblock %}
> 
> 
> The cool thing is that this technique allows a child template to 
> essentially enable a feature in the parent template. The same technique can 
> also be used to disable a feature in the parent template, or really 
> anything that can be driven from a context variable, since, as I understand 
> it, that is what the with statement is doing: temporarily injecting a 
> variable into the context within which the expressions in a chunk of 
> template code are evaluated against.
> 
> I was showing this to a colleague today and, though he thought it was neat, 
> he had never seen it before and was concerned that it was not a mainstream 
> use of the django template language. I did some cursory google searches and 
> couldn't find any overt references to this ability either.
> 
> My concern is that I may be relying on some undocumented side-effect of the 
> way that blocks or the with statement are implemented and that, at some 
> point in the future, this will be changed and all of my templates that use 
> this will break.
>  
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to