xmlns:tal="http://xml.zope.org/namespaces/tal"
Оператор TAL имеет имя и значение (что выражается именем и значением атрибута). Внутри значения обычно записано TAL–выражение, синтаксис которого описывается другим языком — TALES (Template Attribute Language Expression Syntax, синтаксис выражений TAL).
Таким образом, ZPT наполняет содержимым шаблоны, интерпретируя атрибуты TAL. Например, чтобы Zope подставил название документа (тег TITLE
), шаблон может иметь следующий код:
Стоит заметить, что приведенный код сойдет за код на HTML, то есть, Web–дизайнер может на любом этапе работы над проектом редактировать шаблон в HTML–редакторе (при условии, что тот сохраняет незнакомые атрибуты из пространства имен tal
). В этом примере here/title
является выражением TALES. Текст Doc Title
служит ориентиром для web–дизайнера и заменяется значением выражения here/title
, то есть, будет взято свойство title
документа Zope.
Примечание:
В Zope объекты имеют свойства. Набор свойств зависит от типа объекта, но может быть расширен в индивидуальном порядке. Свойство id
присутствует всегда, свойство title
обычно тоже указывается.
В качестве более сложного примера можно рассмотреть организацию повтора внутри шаблона (для опробования этого примера в Zope нужно добавить объект Page Template):
tal:repeat="el python:s.digits">
tal:attributes="href string:/digit/$el"
tal:content="el">SELECTION
Этот шаблон породит следующий результат:
Здесь нужно обратить внимание на два основных момента:
• в шаблоне можно использовать выражения Python (в данном примере переменная s
определена как модуль Python) и переменную–счетчик цикла el
, которая проходит итерации по строке string.digits
.
• с помощью TAL можно задавать не только содержимое элемента, но и атрибута тега (в данном примере использовался атрибут href
).
Детали можно узнать по документации. Стоит лишь заметить, что итерация может происходить по самым разным источникам данных: содержимому текущей папки, выборке из базы данных или, как в приведенном примере, по объекту Python.
Любой программист знает, что программирование тем эффективнее, чем лучше удалось «расставить скобки», выведя «общий множитель за скобки». Другими словами, хорошие программисты должны быть достаточно «ленивы», чтобы найти оптимальную декомпозицию решаемой задачи. При проектировании динамического web–сайта Zope позволяет разместить «множители» и «скобки» так, чтобы достигнуть максимального повторного использования кода (как разметки, так и сценариев). Помогает этому уникальный подход к построению взаимоотношений между объектами: заимствование ( acquisition).
Пусть некоторый объект (документ, изображение, сценарий, подключение к базе данных и т.п.) расположен в папке Example. Теперь объекты этой папки доступны по имени из любых нижележащих папок. Даже политики безопасности заимствуются более глубоко вложенными папками от папок, которые ближе к корню. Заимствование является очень важной концепцией Zope, без понимания которой Zope сложно грамотно применять, и наоборот, ее понимание позволяет экономить силы и время, повторно используя объекты в разработке.
Самое интересное, что заимствовать объекты можно также из параллельных папок. Пусть, например, рядом с папкой Example находится папка Zigzag, в которой лежит нужный объект (его наименование note). При этом в папке Example программиста интересует объект index_html
, внутри которого вызывается note
. Обычный путь к объекту index_html
будет происходить по URI вроде http://zopeserver/Example/
. А вот если нужно использовать note из Zigzag (и в папке Example его нет), то URI будет: http://zopeserver/Zigzag/Example/
. Таким образом, указание пути в Zope отличается от традиционного пути, скажем, в Unix: в пути могут присутствовать «зигзаги» через параллельные папки, дающие возможность заимствовать объекты из этих папок. Таким образом, можно сделать конкретную страницу, комбинируя один или несколько независимых аспектов.
В этой лекции были рассмотрены различные подходы к использованию Python в web–приложениях. Самый простой способ реализации web–приложения — использование CGI–сценариев. Более сложным является использование специальных модулей для web–сервера, таких как mod_python
. Наконец, существуют технологии вроде Zope, которые предоставляют специализированные сервисы, позволяющие создавать web–приложения.
Читать дальше
Конец ознакомительного отрывка
Купить книгу