Передача данных в шаблоны
Передача данных в 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, включая передачу простых и сложных типов данных, использование циклов, условных конструкций и фильтров. Дальнейшее изучение работы с шаблонами будет включать работу с базами данных.