[Tutor] Generating simple HTML from within Python
Duncan Gibson
duncan at thermal.esa.int
Mon May 14 10:24:53 CEST 2007
> I've been searching for a module to allow simple HTML generation, but
> most of them appear to be more concerned with *parsing* HTML and XML.
> The only one that looks promising from reviews dating back to 1998 or
> so is HTMLgen, but the link on starship.python.net appears long dead.
>
> So my question is, what is the preferred way of generating simple HTML
> or XHTML files these days? Is there a 'son of HTMLgen' or similar module?
OK, my thanks to everyone who replied, either on the list or privately.
I followed the links, and the links from those links, and poked around
in the various documentation. What I want to generate depends on the
contents of directories, etc. and is therefore has more variation than
is handled easily in the templating systems.
I chose the HyperText module (http://dustman.net/andy/python/HyperText/)
because this fits more naturally with the code I'm updating, and also
allows subclassing for customisation, etc.
To give you a flavour, one code snippet changes from:
if len(theCase.inputData.relatedFiles)>0:
htmlFile.write('<h2>The related file(s) for this case are:</h2>\n')
htmlFile.write('<ul>\n')
for related_file in theCase.inputData.relatedFiles:
htmlFile.write('<li><a href="%s">%s</a></li>\n' % (
related_file, related_file))
htmlFile.write('</ul>\n')
to the slightly more verbose, but much clearer and less error-prone:
if len(testCaseData.inputData.relatedFiles) > 0:
text = "The related file(s) for this case are:"
heading = HTML.H2(text)
document.append(heading)
bulletList = HTML.UL()
for fileName in testCaseData.inputData.relatedFiles:
anchor = HTML.A(fileName, href=fileName)
listItem = HTML.LI(anchor)
bulletList.append(listItem)
document.append(bulletList)
and the module handles all of the start and end tags, indentation and other
pretty printing. My only concern is that it is almost as old as HTMLgen :-(
Cheers
Duncan
More information about the Tutor
mailing list