"Олег Бройтман. Zope - The Object Publishing Environment" - читать интересную книгу автора

Программирование для этой сложной и гибкой платформы осуществляется
разными механизмами и на разных языках.
1. Программирование на DTML. Это не столько программирование, сколько
верстка, работа webмастера. Из DTML доступно большое число функций и
объектов Питона и Зоп, за исключением тех, которые скрыты по соображениям
безопасности. DTML предназначен преимущественно для презентации, а не для
манипуляции данными.
2. PythonMethods. Код пишется на Питоне и вводится через web-интерфейс
Zope. На этот код распространяются те же ограничения безопасности,что и на
DTML. Обычно PythonMethod - одна или несколько простых функций.
3. ExternalMethods. Это тоже код на Питоне, и тоже обычно несколько
связанных функций. На этот код не распространяются ограничения безопасности
(в том смысле, что этот код имеет доступ ко всем функциям, типам и классам
Питона и Zope, но сам этот код можно защитить от добавления или
использования средствами безопасности Zope), и ставится он в файловую часть
Zope руками администратора хоста, а потом добавляется в иерархию объектов
Zope через web-интерфейс.
4. Компоненты. Они пишутся на Питоне с помощью Product API. Компонент -
это класс или набор деревьев классов. Никаких ограничений по безопасности
(в уже указанном для ExternalMethods смысле; использование же методов
компонента может быть защищено совместными усилиями программиста и
администратора сайта). Код этот ставится в файловую систему администратором
хоста, и Zope приходится перезапускать. После этого в списке Продуктов
появляется новый Продукт (а то и не один, если программист или
администратор хоста разом инициализирует несколько Продуктов или в одном
Продукте регистрирует несколько Производителей (конструкторов)), экземпляры
которого можно создавать в любом месте иерархии объектов.
4. ZClass. "Программирование мышкой". Создатель Z-класса расписывает,
какие у объекта есть атрибуты, и создает на DTML способы редактирования и
показа экземпляров класса. Все "программирование" идет через web-интерфейс
Zope. Z-Класс добавляется в список Продуктов, и можно создавать его
экземпляры. При изменении программистом Z-класса все экземпляры меняются
автоматически (то есть экземпляры содержат не копию кода, а ссылку на
класс). Z-Классы можно наследовать от богатого базового набора классов
Zope, можно от других Z-классов, и программист может создать Компонент,
включающий классы, от которых можно наследовать Z-классы.

ПУБЛИКАЦИЯ ОБЪЕКТОВ

Zope публикует Питоновские объекты (экземпляры классов). Для этого в
Zope есть компонент ZPublisher - брокер объектных запросов. Получив запрос
(от ZServer'а, который в свою очередь получает запрос из внешнего мира по
одному из поддерживаемых протоколов), он:
- находит в иерархии объектов объект, к которому происходит обращение
- преобразует входные данные в соответствующие типы данных Питона
(берутся данные из форм или запроса GET, куки; все упаковывается в
общее пространство имен)
- проверяет аутентификацию и авторизацию
- вызывает найденный объект с параметрами, буферизует ответ (включая
код ответа, куки и прочие заголовки ответа HTTP) и возвращает клиенту