为什么我的Django模板不能显示当前内容

2024-06-02 04:45:32 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的视图.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'

那我该怎么办

谢谢


Tags: namepy视图main地址defhtmlcontext
3条回答

您可以创建一个自定义筛选器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.0计数器返回输入循环的次数,并使用零索引。你知道吗

>>> 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'

别那么做。直接迭代列表。你知道吗

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

在模板中:

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

相关问题 更多 >