* has_patch: 0 => 1
* version: 1.0 => SVN
* easy: => 0
Comment:
This scratches an itch for me too, so I thought I’d implement it.
My patch in `ticket9173.diff` (against r16253) implements a new tag,
'''ifnotempty''', with the following behaviour:
{{{
Renders only if at least one variable or template tag within also
renders.
This allows a variable or template tag to be surrounded by markup,
with
the markup omitted if the variable or template tag does not render.
An `{% else %}` block may also be used.
In the following example, the section will not be rendered unless
another
template extends this one and overrides the `more_information` block::
{% ifnotempty %}
<section>
<h1>More information</h1>
{% block more_information %}{% endblock %}
</section>
{% endifnotempty %}
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/9173#comment:4>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* cc: masterjakul@… (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/9173#comment:6>
* stage: Design decision needed => Someday/Maybe
Comment:
I'm wholly unconvinced by the syntax proposed so far; it seems quite
complicated and non-intuitive. However, I'm not opposed to the idea in
general. So marking "someday" -- if someone comes up with syntax that
makes sense and is easy to explain, then we might consider this.
--
Ticket URL: <https://code.djangoproject.com/ticket/9173#comment:7>
* cc: FunkyBob (added)
Comment:
I ended up implementing a {% wrapif %} tag, which will render the
[optional] head and tail blocks if the body renders as a non-blank [not
all whitespace] string.
{{{
{% wrapif %}
<td>
{% body %}
{% block whatever %}{% endblock %}
{% tail %}
</td>
{% endwrapif %}
}}}
If body is omitted, the first block is assumed to be the body, and the
head empty.
If tail is omitted, it is considered empty.
I mostly did this to help move container tags out of for loops, where
they'd be inside a {% if forloop.first %} and thus cause a test every
iteration.
--
Ticket URL: <https://code.djangoproject.com/ticket/9173#comment:8>
Comment (by alimony):
I was thinking about this the other day. How about something like:
{{{
parent.html
<table>
<tr>
<td>{% block firstcol %}{% endblock %}</td>
<td>{% block secondcol %}{% endblock %}</td>
{% block thirdcol if block.child %}<td>{{ block.child }}</td>{%
endblock %}
</tr>
</table>
}}}
Which would introduce a `{{ block.child }}` thing similar to `{{
block.super }}`
And also conditional blocks in general, in which you can specify:
{{{
{% block title if post.title %}My title{% endif%}
}}}
Which is the equivalent of, but shorter than:
{{{
{% block title %}
{% if post.title %}
{{ post.title }}
{% else %}
{{ block.super }}
{% endif %}
{% endblock %}
}}}
What do you think of all the above?
--
Ticket URL: <https://code.djangoproject.com/ticket/9173#comment:9>
* needs_better_patch: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/9173#comment:10>