Reif Peter writes:
.... My variable is named "zone". The following Python-statement yields 1:
return namespace.has_key("zone")
The following calls yield an error (each one):
return namespace.items() return namespace.keys() return getattr(namespace, "zone") This is all as it should be!
"namespace" was obviously passed correctly, as shown by the success of 'namespace.has_key("zone")'. "namespace.items" and "namespace.keys" fail because the DTML namespace implements the mapping API only partially: "has_key" and subscription "[...]". The bound variables are exposed via subscription and not as attributes. Therefore, 'namespace["zone"]' will work while "namespace.zone" and the equivalent 'getattr(namespace,"zone")' will fail. In some cases, you will want to use "namespace.getitem('zone')" instead of "namespace['zone']". Please read the "Name Lookup" and "DTML" sections of <http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html> Most of your problems and questions are addressed there. Dieter