Django 3: Передача данных в шаблоны

Передача данных в шаблоны

Передача данных в HTML-шаблоны Django — простой процесс. В функции, вызывающей HTML-шаблон (функция render), необходимо передать третий параметр — словарь с данными.

# Пример передачи данных
context = {'title': 'Главная страница'}
return render(request, 'index.html', context)

В этом примере передаётся словарь context, содержащий ключ title со значением ‘Главная страница’.

Доступ к данным в шаблоне

Для доступа к переданным данным в шаблоне используются двойные фигурные скобки {{ }}. Внутри скобок указывается ключ из словаря.

<h1>{{ title }}</h1>

Этот код выведет на странице заголовок «Главная страница».

Сложные данные и обработка в шаблонах

Можно передавать сложные структуры данных, например, списки и словари. Рассмотрим пример:

data = {
    'title': 'Главная страница',
    'items': ['hello', 1, 2, 3],
    'obj': {'car': 'Audi', 'hobby': 'Programming', 'age': 18}
}
return render(request, 'index.html', data)

В шаблоне можно вывести список items целиком:

<p>{{ items }}</p>

Или перебрать его элементы с помощью цикла for:

<ul>
  {% for item in items %}
    <li>{{ item }}</li>
  {% endfor %}
</ul>

Доступ к элементам словаря obj:

<p>Возраст: {{ obj.age }}</p>

Перебор словаря obj:

{% for key, value in obj.items %}
  <p>{{ key }}: {{ value }}</p>
{% endfor %}

В шаблонах Django используются условные конструкции if и циклы for, а также фильтры для обработки данных.

Пример условной конструкции:

{% if item == 'hello' %}
  <p>Привет!</p>
{% endif %}

Пример фильтра upper:

<p>{{ item|upper }}</p>

Фильтр upper преобразует строку в верхний регистр. Аналогично работает фильтр lower для перевода в нижний регистр. Существует множество других фильтров, описанных в документации Django.

Рассмотрены основные способы передачи данных в шаблоны Django, включая передачу простых и сложных типов данных, использование циклов, условных конструкций и фильтров. Дальнейшее изучение работы с шаблонами будет включать работу с базами данных.

Что будем искать? Например,программа