Django. Templates (шаблоны)

    Web страницы бывают статическими и динамическим. Статические страницы - это сайты-визитки, лендинги и подобные. Информация на этих страницах не изменяется и обычно такие страницы хранятся на сервере в виде набора файлов (html, css, js), которые передаются клиенту (Web-браузеру обычно) в неизменном виде. Однако, в большинстве случаев требуется динамически формировать странички. Есть множество подходов к созданию динамических страниц. 

    Один из таких методов - шаблоны Django (templates).  

    Для демонстрации шаблонов - создадим проект django (см. публикацию: "Django. первые шаги"). 

    Рендеринг шаблона осуществляется при помощи функции 

    django.shortcuts.render(request, 'templatename', params)

, где 'templatename' - это имя файла, лежащего в папке 'templates' любого приложения проекта; params - словарь, в котором ключ - имя "переменной", а значение - её значение.

    Обращение к переменной производится через {{ varname }}. Если переменная представляет из себя массив или словарь, то можно обратиться так: {{ listname.0 }} или так {{ dictname.key }}.

Пример: контекст выглядит так: 

context = {
'username': 'Валерий',
'colors': ['red', 'blue', 'жёлтый'],
'phone_numbers': {
'home': 123,
'work': '8-905-123-12-12',
}
}

А шаблон так:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo template</title>
</head>
<body>
<div> Это шаблон django</div>
<div>Привет, {{ username }}</div>
<div>Первый элемент массива colors: {{ colors.0 }}</div>
<div>Обращение к словарю: рабочий телефон: {{ phone_numbers.work }}</div>
</body>
</html>

    Тогда отрисованная страница будет выглядеть так:


    В шаблоне можно использовать теги (tags). Тег вызывается так {% tag %}. Напрмер:
{% csrf_token %}. Большинство тегов принимает аргументы. Пример:
{% cyrcle 'odd' 'even' %}. Некоторые теги требуют открывающий и закрывающий части. Пример:
{% if user.is_authenticated %} Hello, {{ username }} {% endif %}.
    Кроме того в шаблоне можно использовать фильтры. Фильтры преобразуют значение переменной или тега. Например
{% django | title %} при значении django = 'the django project' приведёт к выводу текста 'The Django Project'. Некоторые фильтры принимают параметры:
{% my_date | date: "Y-m-d" %}





Комментарии

Популярные сообщения из этого блога

Сброс счётчика неудачных попыток входа

python: магические (dunder) методы

Настройка ubuntu для сервера Nginx (python3.8)