为什么我的django模板无法显示当前的事情

时间:2011-02-16 08:42:55

标签: python django templates

这是我的views.py:

a=['aaa','bbb','oooo','qqqq','gggg']

def main(request, template_name='index.html'):
    context ={
              'n':range(len(a)),
              'a':a,
    }
    return render_to_response(template_name, context)

这是我的HTML:

{% for i in n %}

    {{a.i}} ww {{a.i+1}}

{% endfor %}

显示ww ww ww ww ww

但我想展示'aaawwbbb bbbwwoooo oooowwqqqq qqqqwwgggg ggggww'

所以我该怎么做,

感谢

3 个答案:

答案 0 :(得分:1)

>>> c=Context({'a':['aaa', 'bbb', 'oooo', 'qqqq', 'gggg']})
>>> Template("{% for x in a %}{% if not forloop.first %}{{ x }} {% endif %}{{ x }}ww{% endfor %}").render(c)
u'aaawwbbb bbbwwoooo oooowwqqqq qqqqwwgggg ggggww'

答案 1 :(得分:0)

不要那样做。直接在列表上迭代。

context = {
    'a': a
}
return render_to_response(template_name, context)

在模板中:

{% for x in a %}
    {{ x }}
{% endfor %}

答案 2 :(得分:0)

您可以创建自定义过滤器http://docs.djangoproject.com/en/1.2/howto/custom-template-tags/并具有以下内容:

# myfilters.py
def return_element(list, index):
    return list[index+1]

然后你可以在模板中使用它,

{% include myfilters %}
...
{% for i in a %}
    {{ i }}ww{{ a|return_element:forloop.counter0 }}
{% endfor %}

forloop模板变量在for标签内自动设置.forloop.counter0返回循环输入的次数,并使用零索引。