[Zope] Newbie: Missing a Variable (TAL/METAL Question)

beno - purabachata at yahoo.com
Sat Jul 29 13:09:44 EDT 2006

Alexis Rhoda's suggestion sounds similar. I edited the code as follows, both with and without the 'global' parameter with the same error thrown. I read the material you recommended before writing the list and have been referencing it. I confess that snakes would bite me repeatedly though before my eyes for lack of seeing them, no matter how hard I try. Your further help would be very much appreciated. TIA,

  <tr tal:repeat="item batch">
   <tal:block define="global number repeat/item/number">
    <td tal:content="number">1</td>
    <td tal:content="item/title">title</td>
    <td><tal:content metal:use-macro="here/?number/macros/author">author</tal:content></td>
    <td><tal:content metal:use-macro="here/?number/macros/content">content</tal:content></td>
    <td tal:content="item/bobobase_modification_time">
      modification date</td>  

    Sorry, a site error occurred.Traceback (innermost last): 

     Module ZPublisher.Publish, line 175, in publish_module_standard
     Module ZPublisher.Publish, line 132, in publish
     Module Zope.App.startup, line 204, in zpublisher_exception_hook
     Module ZPublisher.Publish, line 101, in publish
     Module ZPublisher.mapply, line 88, in mapply
     Module ZPublisher.Publish, line 39, in call_object
     Module Shared.DC.Scripts.Bindings, line 306, in __call__
     Module Shared.DC.Scripts.Bindings, line 343, in _bindAndExec
     Module Products.PageTemplates.ZopePageTemplate, line 222, in _exec
     Module Products.PageTemplates.PageTemplate, line 96, in pt_render
 <ZopePageTemplate at /rejoice.2012.vi/en-us/Books/getQuote used for /rejoice.2012.vi/en-us/Books/test>
     Module TAL.TALInterpreter, line 190, in __call__
     Module TAL.TALInterpreter, line 234, in interpret
     Module TAL.TALInterpreter, line 613, in do_loop_tal
     Module TAL.TALInterpreter, line 234, in interpret
     Module TAL.TALInterpreter, line 409, in do_optTag_tal
     Module TAL.TALInterpreter, line 394, in do_optTag
     Module TAL.TALInterpreter, line 389, in no_tag
     Module TAL.TALInterpreter, line 234, in interpret
     Module TAL.TALInterpreter, line 657, in do_useMacro
     Module Products.PageTemplates.TALES, line 221, in evaluate
 URL: /rejoice.2012.vi/en-us/Books/getQuote
 Line 22, Column 8
 Expression: standard:'here/?number/macros/author'
{'container': <Folder instance at e909350>,
 'context': <Folder instance at 92e1ad0>,
 'default': <Products.PageTemplates.TALES.Default instance at 0x8a1d62c>,
 'here': <Folder instance at 92e1ad0>,
 'loop': <SafeMapping instance at 8ff2380>,
 'modules': <Products.PageTemplates.ZRPythonExpr._SecureModuleImporter instance at 0x8a1d06c>,
 'nothing': None,
 'options': {'args': ()},
 'repeat': <SafeMapping instance at 8ff2380>,
 'request': <HTTPRequest, URL=http://rejoice.2012.vi/Books/test/getQuote>,
 'root': <Application instance at 90c1f80>,
 'template': <ZopePageTemplate at /rejoice.2012.vi/en-us/Books/getQuote used for /rejoice.2012.vi/en-us/Books/test>,
 'traverse_subpath': [],
 'user': Anonymous User}


     Module Products.PageTemplates.Expressions, line 174, in __call__
     Module Products.PageTemplates.Expressions, line 162, in _eval
     Module Products.PageTemplates.Expressions, line 107, in _eval
TypeError: iteration over non-sequence (Also, an error occurred while attempting to render the standard error message.)    

Dieter Maurer <dieter at handshake.de> wrote: beno - wrote at 2006-7-28 15:43 -0700:
> ...
>            tal:content="number">1
>    title
>    author
> ...
> Traceback
> ...
> Line 22, Column 4
> Expression: standard:'here/?number/macros/author'
> ...
>KeyError: 'number' (Also, an error occurred while attempting to render the standard error message.)

The traceback tells you (kept part) that the "KeyError: 'number'" comes
from "here/?number/macros/author" and it is right:

   Unless you use "global", variables defined in TAL only live
   within the element (aka "tag") you have defined them in.

   In your special case, this is the "td" element.
   It it not defined in the following "td"s.

A common approach is to use artificial "block" elements to
carry the definitions for some elements in the loop body -- similar to


Apparently, you already use "tal" prefixed tag names.
The "tal:block" is another standard use...

Another advice: carefully read the PageTemplate section in
the Zope Book (2.7 edition, on "plope.org").


Groups are talking. We&acute;re listening. Check out the handy changes to Yahoo! Groups. 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope/attachments/20060729/6f92e270/attachment.htm

More information about the Zope mailing list