0

我想在 django 应用程序中包含部分 n 次(我是新手/学习 django)。我在rails方面更有经验,我会简单地写:

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

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

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

但是,这不起作用 - 我收到模板语法错误 Invalid block tag: 'i', expected 'endblock'

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

4

2 回答 2

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 %}

是的,非常丑陋。

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

片段 1

片段 2

于 2012-10-29T14:44:45.880 回答
0

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

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

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

于 2012-10-29T14:57:29.327 回答