Sobes.tech
Назад к вопросам
Junior — Middle
55

Имели ли вы опыт использования Django Templates для рендеринга интерфейсов?

Компании, где спрашивали
EvappsEvapps

Ответ от нейросети

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.