我想显示周围的HTML只有当内容是可用的。
例如,只有当user_data.x或user_data.y有值时,才会呈现下列HTML:
<div class="toggle toggle-primary" data-plugin-toggle="">
<section class="toggle blue">
<label>User data</label>
<div class="toggle-content">
<table>
{% if user_data.x %}<tr>
<th>Data x</th>
<td>{{ user_data.x }}</td>
</tr>
</tr>{% endif %}
{% if user_data.y %}<tr>
<th>Data y</th>
<td>{{ user_data.y }}</td>
</tr>
</tr>{% endif %}
</table>
</div>
</section>
</div>用Django做这件事最方便的方法是什么?
我正在显示来自多个数据库表的部分数据。因此,在整个if上创建一个大的HTML并不是一帆风顺的。
使用自定义标记来测试可用性和呈现内容将解决问题。但是,我发现这个解决方案令人震惊,因为它很困难,并且分散HTML,而这似乎是一个非常常见的问题。
发布于 2016-01-08 00:18:07
在你看来我可能会做这样的事
user_data.all = [user_data.x, user_data.y, ...]
user_data.any = any(user_data.all)
在模板中
{% if user_data.any %} {% for elem in user_data.all %} <tr> <th>{{ elem.title }}</th> <td>{{ elem.data }}</td> </tr> {% endfor %} {% endif %}
显然,只有当每个元素都是has.title和.data时,这才能起作用--但是您可以向每个现有模型添加一个属性以生成该数据。
https://stackoverflow.com/questions/34655342
复制相似问题