[Zope] Page Templates + python script example fromThe Zope Book
Wendy Langer
wlanger@bigpond.net.au
Mon, 25 Mar 2002 14:39:47 +1100
Hello all,
I am trying to get the "interest rate calculator" example from chapter 3 of
the Zope Book to work.
I created an interestRateForm page template, an interestRateDisplayTemplate,
and a python script, as described in the chapter (the code was copied
directly from the book and is listed at the bottom of this email for
reference).
When I try to use the example by pointing my browser at the interestRateForm
URL(this displays correctly), I give it some values as requested, then click
the calculate button. The error I get is
Error Type: Undefined
Error Value: years not found in 'years', at line 5, column 6
If I comment out the first line referring to the "years" variable, ie
<!-- <span tal:content="years">2</span> -->
Then I get the slightly different but probably related error
Error Type: TALESError
Error Value: exceptions.NameError on global name 'principal' is not defined
in '', at line 6, column 8
ie referring now to the spot in the interestRateDisplay template where the
python script is actually called, with "principle" being the first argument
to it.
As far as I can guess, these variables are not being correctly passed from
the interestRateForm template to the interestRateDisplay template.
I haven't reaally been able to find anything explicit about how variables
are passed between page templates, how the namespace works, etc.
I tried to have a look at the REQUEST object, I inserted it using <span
tal:content="request"> dummy request </span>
I realise there must be a better way to do this , since this prints out a
godawful mess full of html tags, however i *was* able to see that the
various variables were there in the request object, ie:
h3>form</h3><table><tr valign="top"
align="left"><th>principal</th><td>10000.0</td></tr><tr valign="top"
align="left"><th>periods
Does anyone have any clues as to what I need to do next to make it work?
Thanks :)
Wendy Langer
interestRateForm
****************
<html>
<body>
<form action="interestRateDisplay" method="POST">
<p>Please enter the following information:</p>
Your current balance (or debt): <input name="principal:float"><br>
Your annual interest rate: <input name="interest_rate:float"><br>
Number of periods in a year: <input name="periods:int"><br>
Number of years: <input name="years:int"><br>
<input type="submit" value=" Calculate "><br>
</form>
</body>
</html>
InterestRateDisplay
*******************
<html>
<body>
<p>Your total balance (or debt) including compounded interest over
<span tal:content="years">2</span> years is:</p>
<p><b>$<span tal:content="python:
here.calculateCompoundingInterest(principal,
interest_rate,
periods,
years)">1.00</span></b></p>
</body>
</html>
calculateCompoundInterest
*************************
"""
Calculate compounding interest.
"""
i = interest_rate / periods
n = periods * years
return ((1 + i) ** n) * principal