dynamically creating html code with python...

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Mon Aug 11 16:25:25 EDT 2008


anartz at anartz.cjb.net a écrit :
> Sorry, my fault...
> 
> I am trying to build a web application for data analysis. Basically
> some data will be read from a database and passed to a python script
> (myLibs.py) to build an image as follows.
> 
> [CODE] 
> f=urllib.urlopen("http://localhost/path2Libs/myLibs.py",urllib.urlencode(TheData))
>  print "Content-type: image/png\n" 
 > print f.read()
 > f.close()
 > [/CODE]
> 
> This section behaves as expected, and I can see the chart on the
> web-page.

Indeed. Using an http request to call a local script is totally 
braindead, but this is another problem.

> Now, I would like to add some text and possibly more charts
> (generated in the same way) to my web-page.

Which one ? What you showed is a way to generate an image resource (with 
mime-type 'image/png'), not an html page resource (mime-type : 
text/html). Images resources are not directly embedded in html pages - 
they are *referenced* from web pages (using an <img> tag), then it's up 
to the user-agent (usually, the browser) to emit another http request to 
get the image.


> This is what I need help
> with.

Not tested (obviously), but what you want is something like:

print "Content-type: text/html\n"
print """
<html>
   <head>
     <title>data analysis site</title>
   </head>
   <body>
     <p>This is a trial test</p>
     <img src="http://localhost/myLibs/ChartLib.py?%s" />
   </body>
</html>
""" % urllib.urlencode(TheData)


> My question: How can I use python to dynamically add descriptive
> comments (text), and possibly more charts to the web-page?

The code you showed so far either tried to add text/html to an image 
(that is, binary data), or to embed the image's binary data into 
text/html. None of this makes sense. Period.  The problem is not with 
Python. The problem is that you can't seriously hope to do web 
programming without any knowledge of the http protocol.

Also and FWIW, you'd be better using a decent templating system (mako, 
cheetah, genshi, tal, whatever fits your brain) instead of generating 
html that way.



More information about the Python-list mailing list