Уровень представления гарантирует, что сообщение, проходящее через него, предназначается для предполагаемых получателей. CherryPy поддерживает работу уровня представления с помощью различных шаблонизаторов.
Механизм шаблонов принимает ввод страницы с помощью бизнес-логики и затем обрабатывает его до конечной страницы, которая предназначена только для целевой аудитории.
Малыш — Шаблонный движок
Kid — это простой механизм шаблонов, который включает в себя имя шаблона, который должен быть обработан (что является обязательным), и ввод данных, которые будут переданы при визуализации шаблона.
При первом создании шаблона Kid создает модуль Python, который может служить кешированной версией шаблона.
Функция kid.Template возвращает экземпляр класса шаблона, который можно использовать для визуализации выходного содержимого.
Шаблонный класс предоставляет следующий набор команд —
S.No | Команда и описание |
---|---|
1. |
сериализации Возвращает содержимое вывода в виде строки. |
2. |
генерировать Возвращает содержимое вывода как итератор. |
3. |
записывать Он выводит содержимое вывода в файл объекта. |
сериализации
Возвращает содержимое вывода в виде строки.
генерировать
Возвращает содержимое вывода как итератор.
записывать
Он выводит содержимое вывода в файл объекта.
Параметры, используемые этими командами, следующие:
S.No | Команда и описание |
---|---|
1. |
кодирование Он сообщает, как кодировать выходной контент |
2. |
фрагмент Это логическое значение, которое сообщает прологу XML или Doctype |
3. |
выход Этот тип сериализации используется для визуализации контента |
кодирование
Он сообщает, как кодировать выходной контент
фрагмент
Это логическое значение, которое сообщает прологу XML или Doctype
выход
Этот тип сериализации используется для визуализации контента
пример
Давайте возьмем пример, чтобы понять, как работает ребенок —
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns:py = "http://purl.org/kid/ns#"> <head> <title>${title}</title> <link rel = "stylesheet" href = "style.css" /> </head> <body> <p>${message}</p> </body> </html> The next step after saving the file is to process the template via the Kid engine. import kid params = {'title': 'Hello world!!', 'message': 'CherryPy.'} t = kid.Template('helloworld.kid', **params) print t.serialize(output='html')
Атрибуты ребенка
Ниже приведены атрибуты Kid —
Основанный на XML язык шаблонов
Это язык на основе XML. Шаблон Kid должен быть правильно оформленным XML-документом с соответствующими соглашениями об именах.
Kid реализует атрибуты в элементах XML, чтобы обновить базовый движок для действия, которому необходимо следовать для достижения элемента. Чтобы избежать совпадения с другими существующими атрибутами в документе XML, Kid ввел собственное пространство имен.
<p py:if = "...">...</p>
Подстановка переменных
Kid поставляется со схемой подстановки переменных и простым подходом — $ {variable-name}.
Переменные могут использоваться как в атрибутах элементов, так и в качестве текстового содержимого элемента. Малыш будет оценивать переменную каждый раз, когда происходит исполнение.
Если пользователю требуется вывод буквенной строки как $ {что-то}, его можно избежать с помощью подстановки переменных, удвоив знак доллара.
Условный оператор
Для переключения разных случаев в шаблоне используется следующий синтаксис:
<tag py:if = "expression">...</tag>
Здесь tag — это имя элемента, например, DIV или SPAN.
Выражение является выражением Python. Если в качестве логического значения он принимает значение True, элемент будет включен в выходной контент, иначе он не будет частью выходного контента.
Петлевой механизм
Для зацикливания элемента в Kid используется следующий синтаксис:
<tag py:for = "expression">...</tag>
Здесь tag — это имя элемента. Выражение является выражением Python, например, для значения в […].
пример
Следующий код показывает, как работает механизм зацикливания —
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>${title}</title> <link rel = "stylesheet" href = "style.css" /> </head> <body> <table> <caption>A few songs</caption> <tr> <th>Artist</th> <th>Album</th> <th>Title</th> </tr> <tr py:for = "info in infos"> <td>${info['artist']}</td> <td>${info['album']}</td> <td>${info['song']}</td> </tr> </table> </body> </html> import kid params = discography.retrieve_songs() t = kid.Template('songs.kid', **params) print t.serialize(output='html')
Выход для вышеуказанного кода с механизмом зацикливания выглядит следующим образом: