T. *_*one 15 django django-templates 960.gs
有没有一种方法将查询集的枚举呈现为两div列?
使用960网格,我有一些效果......
<div class="container_16">
<div class="grid_8 alpha"></div>
<div class="grid_8 omega"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
在Django中,一个模型需要在两个列中呈现它的枚举内容,并且最好在某种程度上相同.目前,我有一些丑陋的代码,在视图中将QuerySet分成两半,然后每一半都在各自的列中呈现.
必须有更好的方法来做到这一点,最好只使用模板渲染系统?
仅供参考,目前它的"工作原理"如下:
@render_to('template.html')
def main_athletics_page(request, *args, **kwargs):
sports = Sport.objects.all()
half = sports.count() / 2
return { 'sports_1' : sports[0:half], 'sports_2' : sports[half:] }
Run Code Online (Sandbox Code Playgroud)
<div class="grid_8 alpha">
{% for sport in sports_1 %}
<!-- Blah blah -->
{% endfor %}
</div>
<div class="grid_8 omega">
{% for sport in sports_2 %}
<!-- Blah blah -->
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
not*_*oop 15
我建议使用Django过滤器.
Django代码段提供了一个分区模板过滤器,您可以使用它:
{% load listutil %}
<div class="grid_8 alpha">
{% for sport in sports|partition:"2"|first %}
<!-- Blah Blah -->
{% endfor %}
</div>
<div class="grid_8 omega">
{% for sport in sports|partition:"2"|last %}
<!-- Blah Blah -->
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
使用默认的Django模板标签cycle:
<table>
{% for item in items %}
{% cycle 'row' '' as row silent %}
{% if row %}<tr>{% endif %}
<td>
{{ item }}
</td>
{% if not row %}</tr>{% endif %}
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
它会将您的列表[1 2 3 4 5 6]显示为
1 2
3 4
5 6
顺便说一句,Jinja2模板引擎有batch和slice过滤器可以做到这一点.我切换到jinja2,现在没有"如何使用糟糕的django标签和过滤器显示x"的问题
| 归档时间: |
|
| 查看次数: |
9521 次 |
| 最近记录: |