Допустим, что у нас есть интернет-магазин, а у магазина есть страница, на которой списком выводятся все имеющиеся товары. Все дальнейшее описание касается только этой страницы.
При заходе на эту страницу, пользователь получает весь список товаров. HTML контент страницы отдает backend написаный на Django и, опуская все то, что происходит в приложении, в шаблонах это выглядит следующим образом:
<ul class="items">
{% for item in items %}
{% include 'item.html' %}
{% endfor %}
<ul>
В данном случае `item.html` - это файл шаблона одного товара в списке, который может иметь довольно сложную верстку. В цикле на страницу вставляются все товары и отдается HTML-контент.
На странице присутствует форма, которая позволяет фильтровать товары по стоимости, количеству и так далее. Тут в игру вступает Backbone - обновление списка товаров происходит без перезагрузки страницы, используется GET запрос в API магазина(/api/items/). В ответ приходит JSON, который содержит новый список товаров. Эти товары нужно отобразить на странице.
Код view для товара на frontend-e выглядит следующим образом:
app.ItemView = Backbone.View.extend({
template: _.template('<li><%= item_title %></li>'),
render: function () {
this.el = this.template(this.model.toJSON());
return this;
}
});
Соответственно в переменной `this.el` будет хранится HTML-контент из шаблонизатора Underscore.
Каким образом можно отрендерить товар используя изначальный шаблон `item.html`?