2016-07-06 72 views
0

如果不增加模板变量,这将是一种诡计多端的方式,我该如何“记住”我的小项目变量所在的级别,并正确“增加” Django模板中的级别计数器?Django模板 - 呈现带有递增值的字典列表

我的词典列表看起来像这样:[{'level': 0, 'skill': 'style a page using CSS'}, {'level': 0, 'skill': 'download JSFiddle'}, {'level': 1, 'skill': 'learn django'}, {'level': 2, 'skill: 'customize a template'}]

,我想呈现这样的:

enter image description here

但我不能想出一个办法来适当增加一个django模板中的计数器变量。

这是我目前使用:

{% with level=0 %} 
<h1 align="center"> Level: {{level}} </h1> 
{% for subskill in subskills %} 

    {%if subskill.level > level%} 

    <h1 align="center"> Level:{{level|add:1}} </h1> 
    {%endif%} ... {%endfor%} {%endwith%} 

我有什么权利现在仅会增加水平之一,但这个增量不存储。如此这般0级,1级,1级,1级

+1

我认为只要将您的输入变为 '{0:[{'skill':'使用CSS样式化一个页面'},{'skill':'下载JSFiddle'}],1: [{'skill':'学习django'}],2:[{'skill:'自定义模板'}]}'这个字典的关键字是你的关卡。然后只是迭代字典,并执行subloop渲染数据列表 –

+0

如何在django模板中迭代该字典?我已经尝试过'''在列表中输入......在list.entry'''中的subskill中,但这不起作用 –

+0

A for循环计数器是不好的。我有1-10级。级别可以有多个单项技能。 –

回答

0

正如意见建议,通过改变我的列表的结构看起来像

subskills = {0:[{'skill': 'style a page using CSS'}, {'skill': 'download JSFiddle'}], 1: [{'skill': 'learn django'}], 2: [{'skill: 'customize a template'}]}

传递给视图与

return render(request, 'subskills.html', {'subskills': subskills})

然后渲染模板用:

{% for level, subskill_list in subskills.items%} <h1 align="center"> Level: {{level}} </h1> {% for subskill in subskill_list %} render subskill here... {% endfor %} {% endfor %}