"Christopher J. Kucera" wrote:
'ello.
Bear with me on this one; I'm having worlds of problems coming up with any kind of coherent way of expressing the problem. :)
This code doesn't work. Upon closer inspection, the following line was the culprit:
<dtml-in "REQUEST.form['street'].keys()">
Upon even closer inspection, *none* of the dictionary functions would work. Not even <dtml-var "REQUEST.form['street']['address1']">
I know that in the CVS now, record objects support the Python mapping interface (which is what you're trying to do) but before that, and I think this is the case for the 2.1.x branch, this wasn't supported, and you needed to access the object by attribute only. This makes what you want to do in DTML pretty impossible (but not impossible from python). I guess you can try waiting for the next main trunk release, or you can modify your record objects to support a mapping interface just like the CVS does. It's a very simple class in the lib/python/ZPublisher/HTTPRequest.py module. This is probably the simplest solution to your problem.
Then I decided it was time to just see exactly what was in the object. <dtml-var "REQUEST.form['street']"> yielded the following results (I had just entered sequential numbers for all five inputs):
address1: 1, address2: 2, city: 3, state: 4, zip: 5
Here's the output of <dtml-var "REQUEST.form">:
{'street': address1: 1, address2: 2, city: 3, state: 4, zip: 5, 'submit': 'submit'}
The original <dtml-with> code still works, as does <dtml-var "street.address1">. I've also tried using getitem:
<dtml-var "_.getitem('street')['address1']">
I'm quite confused. It would appear that "street" really *isn't* a dictionary at all,
Nope. In your case it's an object with _instance attributes_ that contain your values. -Michel