Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can't I nest a block tag inside an if tag?

I have a master template file called base.html, in it I have the following code:

{% ifequal environment "dev" %}
    {% block stylesheets %}{% endblock %}
{% endifequal %}

I inherit this in other templates and do the following:

{% block stylesheets %}
    <link ... >
{% endblock %}

The problem is, the stylesheet I link never gets applied, the stylesheets block seems to be ignored whether the ifequal condition is met in the base or not.

like image 715
Soviut Avatar asked Jun 03 '09 02:06

Soviut


2 Answers

Edit (14th October, 2010):

The original question title is no longer true, according to this comment on a ticket on Django.

Original Answer:

I'm not sure why not, but you could just do:

{% block stylesheets %}
    {% ifequal environment "dev" %}
        ... something ....
    {% else %}
        {{ block.super }}
    {% endifequal %}
{% endblock %}

Having rethought this a bit - I guess that means repeating that logic inside each of your templates, which is fairly unsatisfactory, but I'll leave this answer here anyway. I've had a quick look through the Django tickets and can't find anything relevant.

like image 183
Dominic Rodger Avatar answered Oct 15 '22 12:10

Dominic Rodger


This question is no longer relevant - as of r12655 you can nest a block tag within a conditional.

like image 29
Carl Meyer Avatar answered Oct 15 '22 12:10

Carl Meyer