Чтение онлайн

на главную - закладки

Жанры

Язык программирования Python
Шрифт:

Zope и его объектная модель

В рамках этой лекции невозможно детально рассмотреть такой инструмент как Zope, поэтому стоит лишь заметить, что он достаточно интересен не только в качестве среды разработки web–приложений, но и с точки зрения подходов. Например, уникальная объектно–ориентированная модель Zope позволяет довольно гибко описывать требуемое приложение.

Zope включает в себя следующие возможности:

Web–сервер. Zope может работать с Web–серверами через CGI

или использовать свой встроенный Web–сервер (ZServer).

Среда разработчика выполнена как Web–приложение. Zope позволяет создавать Web–приложения через Web–интерфейс.

Поддержка сценариев. Zope поддерживает несколько языков сценариев: Python, Perl и собственный DTML (Document Template Markup Language, язык разметки шаблона документа).

База данных объектов. Zope использует в своей работе устойчивые объекты, хранимые в специальной базе данных (ZODB). Имеется достаточно простой интерфейс для управления этой базой данных.

Интеграция с реляционными базами данных. Zope может хранить свои объекты и другие данные в реляционных СУБД: Oracle, PostgreSQL, MySQL, Sybase и т.п.

В ряду других подобных систем Zope на первый взгляд кажется странным и неприступным, однако тем, кто с ним «на ты», он открывает большие возможности.

Разработчики Zope исходили из лежащей в основе WWW объектной модели, в которой загрузку документа по URI можно сравнить с отправкой сообщения объекту. Объекты Zope разложены по папкам (folders), к которым привязаны политики доступа для пользователей, имеющих определенные роли. В качестве объектов могут выступать документы, изображения, мультимедиа–файлы, адаптеры к базам данных и т.п.

Документы Zope можно писать на языке DTML — дополнении HTML с синтаксисом для включения значений подобно SSI (Server–Side Include). Например, для вставки переменной с названием документа можно использовать

Листинг

<! — #var document_title ->

Следует заметить, что объекты Zope могут иметь свои атрибуты, а также методы, в частности, написанные на языке Python. Переменные же могут появляться как из заданных пользователем значений, так и из других источников данных (например, из базы данных посредством выполнения выборки функцией SELECT).

Сейчас для описания документа Zope все чаще применяется ZPT (Zope Page Templates, шаблоны страниц Zope), которые в свою очередь используют TAL (Template Attribute Language, язык шаблонных атрибутов). Он позволяет заменять, повторять или пропускать элементы документа описываемого шаблоном документа. «Операторами» языка TAL являются XML–атрибуты из пространства имен TAL. Пространство имен сегодня описывается следующим идентификатором:

Листинг

xmlns:tal=«http://xml.zope.org/namespaces/tal»

Оператор TAL

имеет имя и значение (что выражается именем и значением атрибута). Внутри значения обычно записано TAL–выражение, синтаксис которого описывается другим языком — TALES (Template Attribute Language Expression Syntax, синтаксис выражений TAL).

Таким образом, ZPT наполняет содержимым шаблоны, интерпретируя атрибуты TAL. Например, чтобы Zope подставил название документа (тег TITLE), шаблон может иметь следующий код:

Листинг

<title tal:content=«here/title»>Doc Title</title>

Стоит заметить, что приведенный код сойдет за код на HTML, то есть, Web–дизайнер может на любом этапе работы над проектом редактировать шаблон в HTML–редакторе (при условии, что тот сохраняет незнакомые атрибуты из пространства имен tal). В этом примере here/titleявляется выражением TALES. Текст Doc Title служит ориентиром для web–дизайнера и заменяется значением выражения here/title, то есть, будет взято свойство title документа Zope.

Примечание:

В Zope объекты имеют свойства. Набор свойств зависит от типа объекта, но может быть расширен в индивидуальном порядке. Свойство id присутствует всегда, свойство title обычно тоже указывается.

В качестве более сложного примера можно рассмотреть организацию повтора внутри шаблона (для опробования этого примера в Zope нужно добавить объект Page Template):

Листинг

<ul>

<li tal:define=«s modules/string»

tal:repeat=«el python:s.digits»>

<a href=«DUMMY»

tal:attributes=«href string:/digit/$el»

tal:content=«el»>SELECTION</a>

</li>

</ul>

Этот шаблон породит следующий результат:

Листинг

<ul>

<li><a href="#"/digit/1»>1</a></li>

<li><a href="#"/digit/3»>3</a></li>

<li><a href="#"/digit/5»>5</a></li>

<li><a href="#"/digit/7»>7</a></li>

<li><a href="#"/digit/9»>9</a></li>

</ul>

Здесь нужно обратить внимание на два основных момента:

в шаблоне можно использовать выражения Python (в данном примере переменная s определена как модуль Python) и переменную–счетчик цикла el, которая проходит итерации по строке string.digits.

с помощью TAL можно задавать не только содержимое элемента, но и атрибута тега (в данном примере использовался атрибут href).

Поделиться:
Популярные книги

Спасите меня, Кацураги-сан! Том 2

Аржанов Алексей
2. Токийский лекарь
Фантастика:
городское фэнтези
попаданцы
дорама
фэнтези
5.00
рейтинг книги
Спасите меня, Кацураги-сан! Том 2

Лихие. Смотрящий

Вязовский Алексей
2. Бригадир
Фантастика:
попаданцы
5.00
рейтинг книги
Лихие. Смотрящий

Попаданка. Финал

Ахминеева Нина
4. Двойная звезда
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Попаданка. Финал

Санек 2

Седой Василий
2. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 2

Имя нам Легион. Том 11

Дорничев Дмитрий
11. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 11

На границе империй. Том 10. Часть 7

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 7

Бастард Императора

Орлов Андрей Юрьевич
1. Бастард Императора
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Бастард Императора

Я все еще не князь. Книга XV

Дрейк Сириус
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не князь. Книга XV

Жнец

Поселягин Владимир Геннадьевич
1. Жнец
Фантастика:
попаданцы
альтернативная история
6.40
рейтинг книги
Жнец

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Хозяин Стужи

Петров Максим Николаевич
1. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Хозяин Стужи

Ученик. Книга 4

Первухин Андрей Евгеньевич
4. Ученик
Фантастика:
фэнтези
5.67
рейтинг книги
Ученик. Книга 4

Хозяин Теней 3

Петров Максим Николаевич
3. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Хозяин Теней 3