[Zope] DTMLTemplate + PythonMethod == separate code from HTML?

Thiebaut CHAMPENIER Thiebaut.Champenier@synlogic.ch
Tue, 21 Nov 2000 15:41:28 +0100


In fact, I find it too hard to code something using DTML, that's why I'd
like to use good old python and to keep only variable substitution in my
HTML (dtml-var, or maybe just &dtml-my_variable; which is an easier to use
form of it, or maybe replace it with @my_var@ or smth like that, which I
would find even easier!)

I'd like to be able to delimit blocks in an HTML file and to use these
blocks from a python program, the goal is to completely separate the code
from the design (HTML). With DTML, the code and the design are mixed.

it would look like this:

def index_html(_):
  "Display a list of items taken from the products database"
  if not check_password():
    return bad_password_page
  query_result = my_zsql_query(_)
  if not query_result:
    return my_template.no_result
  result = ReturnStream()
  result.add( my_template.header )
  for line in query.result:
    result.add( my_template.one_line, line )
  result.add( my_template.footer )

and my_template would be an HTML file with <dtml-block> tags that delimit
the header, one_line and footer blocks.
The one_line block would use some variables defined in the line dictionary;
for example:

<dtml-block one_line>
<tr><td>@item@</td><td>@quantity@</td><td>@price@</td></tr>
</dtml-block>

The DTMLTemplate and PythonMethods products seem to provide this kind of
separation between code and design, but I did not manage to get them working
properly together:

DTMLTemplate:  when I display a block (using <dtml-var
"my_template.my_block">), the HTML tags in my_block appear quoted, should I
use a fmt="html" or something like that to avoid the quoting?

PythonMethods: how can I access Zope objects from my method?  Typically I'd
like to call a template block from my method, but just using
my_template.my_block doesn't work.

As you can see, I'm not a Zope guru, but I'm willing to learn!  I believe
that Zope and PTK have a big role to play in the current portal and
application servers war... ready to use portal-in-a-box products cost around
$100,000... so for that price you can use zope and afford more consulting
and coding services!

BTW, currently I'm experiencing a problem: no images (icons, ZopeButton
etc..) appear on my management pages, images stored in the ZODB are ok
though. any idea where are those images like
http://localhost:8080/p_/ZopeButton ?

Thanks for your time!