Django模板 - 具有灵活名称的可重用片段

时间:2011-12-18 15:27:52

标签: django django-templates

我有一个可重复使用的HTML片段,用于列出项目。因此,为了列出视图中的项目,我只是这样做:

variables = RequestContext(request, {
    'items': items,
}
return render_to_response('template_in_question',variables)

,片段是:

{% for item in items %}
    <p>Item: {{item.name}} </p>
{% endfor %}

到目前为止一切顺利。但是,有些视图我想要使用相同的可重用片段两次。例如,如果我想列出最畅销的商品和最新商品,我需要创建两个可重复使用的商品的副本:

视图将是这样的:

variables = RequestContext(request, {
    'most_sold_items': most_sold_items,
    'latest_items': latest_items
}

并且HTML中需要有两个可重复使用的HTML模板:

{% for item in most_sold_items %}
     <p>Item: {{item.name}}</p>
{% endfor %}

和第二个

 {% for item in latest_items %}
     <p>Item: {{item.name}}</p>
 {% endfor %}

所以我的问题是:如何在同一视图中使用两个或更多项目列表,并使用通用的HTML模板?例如,在上面的视图中传递“most_sold_items”和“latest_items”并以某种方式仅使用一个HTML模板来单独列出每个?

1 个答案:

答案 0 :(得分:7)

您可以使用include标记执行此操作。基本上,你最终得到:

<h1>Most sold items</h1>
{% include "items.html" with items=most_sold_items only %}

<h1>Latest items</h1>
{% include "items.html" with items=latest_items only %}