如何在django中包含n次模板?

时间:2012-10-29 14:34:50

标签: python django partial

我想在django应用程序中包含n次(我是新来的/学习django)。我在rails中更有经验,我只想写:

 <% 3.times do %>
    render 'feeds/feature'
 <% end %>

我想知道如何在django中做类似的事情。以下是我的想法:

 {% i = 1%}
 {% for i =< 9 %}
   {% include 'feeds/feature.html'%}
   {% i += 1%}
 {% end %}

然而,这不起作用 - 我得到模板语法错误无效的块标记:'i',预期'endblock'

我可以像在rails中一样将python嵌入到django页面中吗?而且,更重要的是,我如何在django中包含feature.html页面n(或在本例中为9)次?

2 个答案:

答案 0 :(得分:2)

只需将范围放在视图的上下文中,然后:

在视图中:

render_to_response('foo.html', {..., 'range': range(9), ...}, ...)

在模板中:

{% for i in range %}
    {% include 'feeds/feature.html'%}
{% endfor %}

你也可以这样做:

{% for i in "123456789" %}
    {% include 'feeds/feature.html'%}
{% endfor %}

是的,非常难看。

或者您可以定义模板标记:

Snipet 1

Snipet 2

答案 1 :(得分:0)

也许我错过了一些东西,但我无法想象我会以这种方式需要它。如果您有来自数据库的功能列表并希望显示其中的一些特定数量,则可以通过以下方式执行此操作:

{% for feature in feature_list|slice:":3" %}
    {% include "template.html" %}
{% endfor %}

或者简单地在下面写三个包含。但正如我所说,这不是一种常见的编程模式,可以有更好的解决方案。