Ответ
В архитектуре Django MTV (Model-Template-View) **Template** (Шаблон) — это компонент, отвечающий за представление данных и генерацию пользовательского интерфейса, чаще всего HTML-страниц.
Его основная задача — отделить логику обработки данных (View) от их визуального отображения. Это позволяет frontend-разработчикам и дизайнерам работать над внешним видом, не вникая в Python-код.
Шаблоны используют специальный синтаксис Django Template Language (DTL) для вставки динамических данных:
* **Переменные**: `{{ user.name }}` — для вывода значений.
* **Теги**: `{% for item in item_list %}` — для управляющих конструкций, таких как циклы и условия.
* **Фильтры**: `{{ post.created_at|date:"D d M Y" }}` — для форматирования переменных.
**Пример шаблона:**
```html
{{ page_title }}
Статьи
-
{% for article in articles %}
- {{ article.title }} - опубликовано {{ article.pub_date|date:"d.m.Y" }} {% empty %}
- Статей пока нет. {% endfor %}
Ответ 18+ 🔞
А, шаблоны в Джанге, ну это же классика, блядь! Слушай, представь себе такую картину: у тебя есть мозг (это вьюха), который всё думает, логику обрабатывает, данные из базы тянет. А есть, блядь, лицо — это и есть шаблон. И задача этого лица — не думать, а красиво всё показать, чтобы пользователь не обосрался от ужаса, глядя на сырые данные.
Вот этот самый Template в архитектуре MTV — он как раз за это и отвещает. За представление, за отрисовку, за то, чтобы из кучи питоновских словарей и объектов сделать нормальную, человеческую HTML-страницу. Полная хуйня, если бы вьюха сама строки HTML собирала — это ж пиздец какой-то, одноразовый код, который ни понять, ни изменить.
Поэтому придумали свой язык, DTL — Django Template Language. Не пугайся, он проще, чем кажется. Всё строится на трёх китах, блядь:
1. **Переменные** — `{{ user.name }}`. Вставил в шаблон, и на этом месте появится имя юзера. Всё, точка. Не надо никаких `print`, просто обернул в двойные фигурные скобки и забыл.
2. **Теги** — `{% for item in list %}`. Это уже управляющие конструкции, мозги шаблона, хотя и примитивные. Циклы, условия (`if`), наследование. Без них никуда.
3. **Фильтры** — `{{ date|date:"d.m.Y" }}`. Вот это, сука, мощная штука! Допустим, дата у тебя в базе хранится в формате, от которого глаза на лоб лезут. А ты взял, пропустил её через фильтр `date` — и на выходе получил "25.12.2023". Красота, ёпта!
Вот смотри, живой пример, чтобы вообще всё стало на свои места:
```html
{{ page_title }}
Статьи
-
{% for article in articles %}
- {{ article.title }} - опубликовано {{ article.pub_date|date:"d.m.Y" }} {% empty %}
- Статей пока нет. {% endfor %}