Имели ли вы опыт использования Django Templates для рендеринга интерфейсов?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Нужно показать, что есть практический опыт работы с Django Templates и понимание, где этот подход уместен. Важно уметь объяснить, как шаблоны помогают разделять логику и представление, и какие у них ограничения. Хорошо, если есть пример работы с контекстом, наследованием шаблонов и безопасным выводом данных.
Определение:
Django Templates — это встроенный шаблонизатор Django для генерации HTML на сервере. Он позволяет подставлять данные из view в HTML, использовать условия, циклы, наследование шаблонов и простые фильтры. Это удобный способ быстро собирать интерфейсы без отдельного фронтенд-рендера на клиенте.
Пример использования:
Например, на странице списка задач view передаёт в шаблон список объектов, а шаблон выводит их в таблицу или список.
# views.py
from django.shortcuts import render
def tasks_list(request):
tasks = [
{"title": "Сделать ревью", "done": True},
{"title": "Обновить документацию", "done": False},
]
return render(request, "tasks/list.html", {"tasks": tasks})
<!-- templates/tasks/list.html -->
<ul>
{% for task in tasks %}
<li>
{{ task.title }}
{% if task.done %}(выполнено){% endif %}
</li>
{% endfor %}
</ul>
Пояснение кода:
В views.py формируется контекст — словарь с ключом tasks, который передаётся в шаблон через render.
В шаблоне {% for task in tasks %} проходит по списку задач.
{{ task.title }} вставляет значение поля в HTML, а {% if task.done %} добавляет условный текст только для выполненных задач.
Таким образом сервер сразу отдаёт готовую HTML-страницу, а не только данные.
Ключевые моменты:
- Django Templates подходят для серверного рендеринга HTML и простых интерфейсов.
- Удобны для страниц с небольшой или средней интерактивностью.
- Шаблоны поддерживают наследование, блоки, циклы, условия и фильтры.
- Бизнес-логику лучше держать во view или моделях, а не в шаблонах.
- По умолчанию Django экранирует вывод, что помогает снизить риск XSS.
- Если интерфейс сильно динамический, часто лучше подключать отдельный фронтенд или API.