[ZPT] HTML data entry forms and ZPTs
Ken Winter
ken at sunward.org
Mon May 9 13:59:45 EDT 2005
I'm trying to build a data-entry form using only ZPTs (no DTML, except in
the ZSQL methods that put the data into the DB).
My little test page is at
http://dhat.vega.zettai.net/clients/ridhwan/dhr3/deltest.htm. At the top
are the persons currently in the site's MySQL database; the retrieval of
them works fine. What doesn't work is the attempt to delete a person by
entering an Id into the field and pressing the "Delete this Person" button.
The core ZPT code for this page is:
<h1> People (deletion test)</h1>
<table tal:repeat="row here/dbobs/read_all_people" width="100%" border="0"
cellspacing="0" cellpadding="0"><font face="Verdana, Arial, Helvetica,
sans-serif">
<tr>
<td width="44%" tal:content="string:${row/person_id} - ${row/first_name}
${row/middle_names} ${row/last_name}">Filler</td>
<td width="56%"> </td>
</tr>
</table>
<p></p>
<form action="python:here.dbobs.delete_person_py(context.REQUEST.person_id)"
method="post" name="delete_form">
<p>Id of Person To Delete:
<input type="text" name="person_id:int" />
</p>
<p>
<input name="do_delete" type="submit" id="do_delete" value="Delete this
Person" />
</p>
</form>
<p>The "Ids" are the numbers in front of each person's name.</p>
<p><a href="deltest.htm">Refresh This Page</a></p>
<p tal:replace="python:here.dbobs.test1('MyParamValue')">Junk</p>
Here is the entire body of the Python script "delete_person_py(id)" that the
ZPT <form> tag is trying to call and that in turn invokes the ZSQL
"delete_person" method:
container.delete_person(person_id=id)
and here's the ZSQL method "delete_person" that it calls:
delete from person where person_id = <dtml-sqlvar person_id type=int>
I think I have the problem narrowed down to the call from the ZPT to the
Python script, which somehow fails to pass the form variable "person_id"
that is needed to select the person to delete. For example, I know that I
can do deletes successfully by invoking the Python script directly from the
ZMI. I have tried every variation on the data-passing that I can think of.
I've tried calling the ZSQL method directly from the ZPT. The successful
call to another script at the bottom of the page rules out a bunch of other
problems. I have scoured every Zope reference I can find - there are plenty
of examples of doing forms with DTML (e.g.
http://www.faqts.com/knowledge_base/view.phtml/aid/5518/fid/567), but none
for doing forms with ZPTs.
There's just gotta be a "well, duh" simple solution to this, but it has
escaped me.
- Thanks in advance for your help!
- Ken Winter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 11203 bytes
Desc: not available
Url : http://mail.zope.org/pipermail/zpt/attachments/20050509/cac0214e/winmail.bin
More information about the ZPT
mailing list