【问题标题】:how to include a template n times in django?如何在 django 中包含一个模板 n 次?
【发布时间】:2012-10-18 21:20:57
【问题描述】:

我想在 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 页面?

【问题讨论】:

标签: python django partial


【解决方案1】:

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

在视图中:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 2018-02-02
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      相关资源
      最近更新 更多