2011-12-18 3 views
3

У меня есть многократно используемый фрагмент HTML, который я использую для перечисления элементов. Таким образом, в список элементов в представлении я просто сделать:Шаблоны Django - Многоразовый фрагмент с гибким именем

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-шаблон для каждого отдельного списка?

ответ

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

Спасибо. Это именно то, что я искал. –

Смежные вопросы