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

ответ
Без помощи со стороны программы ZPublisher, конечно, не может
осуществить подходящие преобразования типов, поэтому автор может указать, в
каком виде он хочет получить данные. Вот пример формы для заполнения, с
указаниями, зашитыми в имена полей:
FORM name="formA" action="myObject" method="POST">
input type="text" name="age:int" size="2">
input type="checkbox" name="category:int:list">K1
input type="checkbox" name="category:int:list">K2
input type="submit" name="manage_setAge:method" value="Установить">
input type="submit" name="manage_delete:method" value="Удалить">
/FORM>
После заполнения формы в браузере и нажатия одной из кнопок ZPublisher
преобразует введенные данные. Переменная age преобразуется в целое,
checkbox'ы - в список целых, и вызовется один из методов объекта myObject в
зависимости от нажатой кнопки.
Проверка, естественно, осуществляется на стороне сервера, в Zope. Если
переменная age не преобразовывается в целое, возникнет ошибка. Ее может
обработать публикуемый объект, а нет - Zope выдаст пользователю HTML с
текстом об ошибке. Для проверки на стороне клиента можно использовать
JavaScript. Искривленные имена слегка мешают доступу из JS, но это не
смертельно: element = document.forms["formA"].elements["age:int"]
Как именно вызовется метод, зависит от его (метода) сигнатуры (в Питоне
вся информация о коде доступна во время выполнения). Например, если
myObject - экземпляр вот такого класса:
class AgeManager:
def view(self, age=None):
if age is None:
age = self.age
return "Возраст: b>%d/b>" % age
def manage_setAge(self, age):
self.age = age
def manage_delete(self, category):
for c in category: self.delete(c) # self.delete не показан
то метод manage_setAge вызовется с целым age, или manage_delete - со
списком нажатых checkbox'ов. Остальные переменные формы можно извлечь из
общего пространства имен, доступного через self.
Публикация через метод GET и того проще: на запрос
http://www.my.server/root/subobject/sub2/myObject/view?age:int=12
ZPublisher обходит иерархию объектов (траверс с учетом механизма
acquisition, о чем позже) и публикует myObject - у объекта вызывается метод
view с целочисленным параметром.

ACQUISITION - заимствование вместо наследования

Acquisition - это механизм запроса значений переменных из текущего
контекста. Переведем это слово как "заимствование" атрибутов; относительно
адекватный перевод.
Заимствование значения атрибута происходит из контекста объекта.
Контекстов бывает два - статический, возникающий в момент создания объекта,