[Zope] Newbie: Why doesn't this work?

Marcus Collins mcollins@sunesi.com
Tue, 29 Feb 2000 12:24:48 +0200


What follows the = in the dtml-let tag must be either the name of a variable
visible in the current namespace, or a python expression. 

In your <dtml-let x=5>, Zope is trying to find a variable named 5 and assign
its value to x. Zope can't find a variable named 5, hence the KeyError.

You need to use <dtml-let x="5"> so that the python expression 5 (an
integer) is assigned to x. Likewise for y.

Note too that, when you assign a string to a variable using dtml-let, you
need to use two sets of quotes, e.g. <dtml-let foo="'bar'">, so that the
python expression returns 'bar' (a string).

-- Marcus

> -----Original Message-----
> From: Michiel Toneman [mailto:toneman@phil.uu.nl]
> Sent: 29 February 2000 11:44
> To: zope@zope.org
> Subject: [Zope] Newbie: Why doesn't this work?
> 
> 
> 
> 
> Hi All,
> 
> After struggling with Zope for two weeks now, I 
> still can't figure some things out... From the 
> namespaces HOWTO:
> 
> ---------------------------------------------------------------
> Example: The Let Tag
> 
> The Let tag let's you initialize and push a new name space onto
> the name space stack. The arguments to the Let Tag are evaluated
> and placed into the top most name space. For example:
> 
> <dtml-let x=5 y=7>
>    <dtml-var x><dtml-var y>
> </dtml-let>
> 
> The let tag creates a new name space, enters the integers x and y
> into the new name space, and pushes the name space onto the stack.
> ----------------------------------------------------------------
> 
> Well, it just doesn't work! I get:
> 
> Error Type: KeyError
> Error Value: 5
> 
> I've also tried 
> 
> <dtml-let x=5  
>           y=7>
> <dtml-var x><dtml-var y>
> </dtml-let>
> 
> just to be sure...
> 
> 
> Also from the namespaces howto:
> 
> ----------------------------------------------------------------------
> Example: The In Tag
> 
> A common sight in DTML is iterating over the contents of a
> Folder. Create a folder called MyFolder and a DTML Method called
> MyMethod containing the following:
> 
> <dtml-in objectValues>
>    <dtml-var id>
> </dtml-in>
> 
> Before entering the block, id was bound to MyFolder. When the block
> is entered, a new name space is popped onto the name space stack. The
> new name space contains the name space of the sequence-item
> in the tag. Because new name spaces override old ones, the new
> 'sequence-item's id attribute is printed in our example instead
> of MyFolder.
> 
> DTML tags push and pop name spaces onto the stack. Some DTML tags,
> like and , do not change the name space at all, but , and modify
> the name space stack in their own way.
> 
> The tag pushes the current sequence-item onto the name space stack
> and then pops it off the stack when the end of the tag is reached. In
> each iteration through the sequence objectValues, the id of each
> item in the sequence is rendered
> ----------------------------------------------------------------------
> 
> This doesn't give me anything (yes, there are things in a 
> folder below)
> 
> So what am I doing wrong, am i a user=id10t or is something seriously
> screwy with Zope? I can get a lot of stuff to work, but it's all slow 
> trial and error, because I can't figure out the logic (and apparently 
> neither could the namespaces HOWTO author :( )
> 
> Please help,
> 
> Michiel Toneman
> 
> -- 
> From a Sun Microsystems bug report (#4102680):
>  "Workaround: don't pound on the mouse like a wild monkey."
> 
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - 
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )
>