Re: [Zope] Debugging and DTML
administrato-@consotec.de wrote: original article:http://www.egroups.com/group/zope/?start=20553
I'm developing a product for ZOPE. Because changes in the python and dtml files are not detected I need to restart the ZOPE server all the time. Is there a way get around this?
(1) For the python external methods, you have click on the method in the management screen, and then click on the "Edit" button. You have to do this every time you make a change to the external python file. I know, the button shouldn't be named "Edit": "Update" would be more a more appropriate name. (2) DTML changes are detected. Just make sure you click on the "Change" button.
How can I list a dictionary (e.g the REQUEST) with dtml. In python I would do the following: for i in REQUEST.keys(): print "%s=%s"%(i,REQUEST[i])
(3) <dtml-var REQUEST> prints out all the items. No need to iterate. But if you really want to iterate, you can do: <dtml-in "REQUEST.keys()"> <dtml-var sequence-item> <dtml-var "REQUEST[_['sequence-item']]"><br> </dtml-in>
And with DTML? Here is the peace of dtml I came up with. But it doesn't work! I look in documenation but ... What is wrong?
(4) "piece", not "peace". :)
<dtml-in "REQUEST.keys()"> <b><dtml-var sequence-item>=<dtml-var "REQUEST[sequence-item]" ></b><br> </dtml-in>
(5) Arghh... see, Zope designers wrote in Python, but deep down they were still thinking in Perl. Which explains the many bizarre behavior of the DTML syntax. Anyway, the short answer is: sequence-item is not a valid name after you put it in between quotes. That is, "... sequence-item ..." is equivalent to "... sequence - item ..." So you were performing a subtraction operation, without knowing it. :) The way out is to access the sequence-item with the namespace variable "_". In your case: <dtml-in "REQUEST.keys()"> <b><dtml-var sequence-item> = <dtml-var "REQUEST[_['sequence-item']]"</b><br> </dtml-in> The "_" behaves like a dictionary. But you cannot always treat it as an ordinary dictionary. For instance, the expressions <dtml-var _> <dtml-var "_"> <dtml-in "_.keys()"> will not work. DTML is pretty messy the way it is today. It smells like Perl, quacks like Perl, waddles like Perl. But... then... it is also free. I just wish it were free and as good as Python. :) Is that too much to ask? :) (No need to answer, it is.) :) regards, Hung Jung ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com
participants (1)
-
Hung Jung Lu