Python django template for
Django предоставляет возможность использовать в шаблонах ряд специальных тегов, которые упрощают вывод некоторых данных. Рассмотрим некоторые наиболее используемые теги.
autoescape
Тег autoescape позволяет автоматически экранировать ряд символов HTML и тем самым сделать вывод на страницу более безопасным. В частности, производятся следующие замены:
- < заменяется на <
- > заменяется на >
- ‘ (одинарная кавычка) заменяется на '
- » (двойная кавычка) заменяется на "
- & заменяется на &
Например, пусть у нас будет определен следующий шаблон index.html :
Здесь в шаблоне два раза выводится содержимое переменной body . Однако сначала она выводится сама по себе, в во втором случае ее вывод помещается в между тегами и . Тег в качестве параметра принимает одно из значений: on (экранирование включено) и off (экранирование отключено). В данном случае тегу передается значение off , а это значит, что внутри блока тега autoescape экранирование отключено.
Определим следующую функцию-представление, которая использует данный шаблон и передает в него некоторые данные:
from django.shortcuts import render def index(request): return render(request, "index.html", context = Hello World!">)
Здесь в шаблон передается некоторая строка с кодом HTML. По умолчанию шаблоны применяют экранирование. Поэтому на веб-странице мы увидим код html в текстовом виде, а во втором случае переданные данные будут интпретированы непосредственно как код html:
Комментарии
Для определения комментариев в шаблоне применяется тег comment : все, что помещается между тегами и , игнорируется при генерации html-страницы.
Вывод содержимого в шаблон Django
>
if..else
Тег if оформляется в виде блока:
Этот тег оценивает некоторое условие, которое должно возращать True или False : если возвращается True , то выводится содержимое блока .
Например, пусть в представлении передаются в шаблон некоторые значения:
from django.shortcuts import render def index(request): data = return render(request, "index.html", context=data)
В шаблоне в зависимости от значения переменной n мы можем выводить определенный контент:
То есть если n больше 0, то будет выводиться, что число положительное. Если n меньше или равно 0, ничего не будет выводиться.
С помощью дополнительного тега можно вывести контент в случае, если условие после if равно False:
0 %>
Число положительное
Число отрицательное или равно нулю
С помощью тега можно проверить дополнительные условия, если условие в if равно False:
0 %>
Число положительное
Число отрицательное
Число равно нулю
Стоит отметить, что в условии, которое передается тегу if , можно применять ряд операторов, которые возвращают True или False: == , != , < , >, = , in , not in , is , is not , and , or , not .
Циклы
Тег for позволяет создавать циклы. Этот тег принимает в качестве параметра некоторую коллекцию и пробегается по этой коллекции, обрабатывая каждый ее элемент.
Например, пусть из представления в шаблон передается некоторый список:
from django.shortcuts import render def index(request): langs = ["Python", "JavaScript", "Java", "C#", "C++"] return render(request, "index.html", context=)
Выведем элементы списка langs в шаблоне с помощью тега for :
Вполне возможно, что переданная из представления в шаблон коллекция окажется пустой. На этот случай мы можем использовать тег :
Подобным образом можно перебирать в шаблоне другие коллекции, например, словари:
В данном случае перебирается словарь data, который передается из представления:
from django.shortcuts import render def index(request): data = return render(request, "index.html", context=)
Определение переменных
Тег позволяет определить переменную и использовать ее внутри блока тега. Например:
В данном случае определены две переменных: name и age, которые мы можем использовать внутри блока . . Однако вне этого блока эти переменные использоваться не могут.
Даты
Тег позволяет вывести системное время. В качестве параметра тегу now передается формат данный, который указывает, как форматировать время и дату.
Символ «Y» передает год в виде четырех цифр, «y» — берет из года последние две цифры. «F» — полное название месяца, «N» -сокращенное название месяца. «j» — день месяца. «P» — время. Все возможные форматы для вывода даты и времени можно посмотреть в документации
Стоит отметить, что в качестве времени Django берет значение переменной из файла settinds.py , которая по умолчанию имеет следующее определение:
То есть отсчитывается относительно UTC. Это может быть не всегда удобно. И соответственно мы можем изменить ее значение на нужное. Например, настройка для московского часового пояса: