根据访问网页的用户,生成的HTML表格可能会显示额外的列。我当前的实现检查了模板文件中每一行的标志,其中show_secret_column
是由视图设置的标志:
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th class="col-md-4">Column 1 Header</th>
<th class="col-md-2">Column 2 Header</th>
<th class="col-md-2">Column 3 Header</th>
{% if show_secret_column %}
<th class="col-md-2">Secret Column Header</th>
{% endif %}
</tr>
</thead>
<tbody>
{% for row in row %}
<tr>
<td>{{ row.a }}</td>
<td>{{ row.b }}</td>
<td>{{ row.c }}</td>
{% if show_secret_column %}
<td>{{ row.secret }}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
这是一种不好的方法吗?是否有任何其他方法建议在模板中执行此检查一次并生成额外的列?
答案 0 :(得分:1)
如果你真的想对行数进行微量优化(我强烈建议你不要这样做)你可以像这样复制模板:
{% if show_secret_column %}
<thead>
<tr>
<th class="col-md-4">Column 1 Header</th>
<th class="col-md-2">Column 2 Header</th>
<th class="col-md-2">Column 3 Header</th>
<th class="col-md-2">Secret Column Header</th>
</tr>
</thead>
<tbody>
{% for row in row %}
<tr>
<td>{{ row.a }}</td>
<td>{{ row.b }}</td>
<td>{{ row.c }}</td>
<td>{{ row.secret }}</td>
</tr>
{% endfor %}
</tbody>
{% else %}
<thead>
<tr>
<th class="col-md-4">Column 1 Header</th>
<th class="col-md-2">Column 2 Header</th>
<th class="col-md-2">Column 3 Header</th>
</tr>
</thead>
<tbody>
{% for row in row %}
<tr>
<td>{{ row.a }}</td>
<td>{{ row.b }}</td>
<td>{{ row.c }}</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
我只想重复一遍,如果我在代码中看到这一点,我会感到震惊。它现在非常脆弱(您必须小心复制对这两个部分所做的所有更改)。这也是一个臃肿和眼眶。
你的主要目标应该是首先没有一个40k行的表。也就是说,这会做你要求的。