Шаблоны Django - Многоразовый фрагмент с гибким именем - PullRequest
3 голосов
/ 18 декабря 2011

У меня есть фрагмент 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 Ответ

7 голосов
/ 18 декабря 2011

Вы можете сделать это с помощью тега включения.По сути, вы получите:

<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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...