dynamically creating html code with python...
Hi,
how can I combine some dynamically generated html code (using python) with the
output of a urllib.openurl() call?
I have tried to use the StringIO() class with .write functions, but it did not
work. Below is the code that does not work.
[CODE]
f=StringIO.StringIO()
f.write('data analysis')
f.write(urllib.urlopen("http://localhost/path2Libs/myLibs.py";,
urllib.urlencode(TheData)))
f.write("")
print "Content-type: text/html\n"
print f.read()
f.close()
[/CODE]
What is wrong with this approach/code? Is there an easier way of doing it?
Thanks.
--
http://mail.python.org/mailman/listinfo/python-list
Re: dynamically creating html code with python...
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.
Now, I would like to add some text and possibly more charts (generated in the
same way) to my web-page. This is what I need help with.
I tried to add some html code to the f variable (file-type variable) before and
after the plot generated (see first post). When I load the page in a browser, I
get a blank page, not even the chart (that I used to get) appears any more.
There is no error messages in the server's error log, and when I run it as a
python script I get the following output:
Content-type: image/png\n
My question:
How can I use python to dynamically add descriptive comments (text), and
possibly more charts to the web-page?
Hope this is more explanatory.
Thanks
[EMAIL PROTECTED] wrote :
> Hi,
>
> how can I combine some dynamically generated html code (using python) with
> the output of a urllib.openurl() call?
>
> I have tried to use the StringIO() class with .write functions, but it did
> not work. Below is the code that does not work.
>
> [CODE]
> f=StringIO.StringIO()
> f.write('data analysis')
> f.write(urllib.urlopen("http://localhost/path2Libs/myLibs.py";,
> urllib.urlencode(TheData)))
> f.write("")
>
> print "Content-type: text/html\n"
> print f.read()
> f.close()
> [/CODE]
>
> What is wrong with this approach/code? Is there an easier way of doing it?
>
> Thanks.
>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
--
http://mail.python.org/mailman/listinfo/python-list
Re: dynamically creating html code with python...
I have tried calling a script containing the code below from a web browser and
it did not get the text.
[CODE]
#!c:/Python25/python.exe -u
import StringIO
f=StringIO.StringIO()
f.write('data analysis site')
f.write("This is a trial test")
f.write("")
print "Content-type: text/html\n"
print f.read()
f.close()
[/CODE]
So, I assume this is not the way to create web pages any links that can
help me take the right way?
Thanks!
Jerry Hill <[EMAIL PROTECTED]> wrote :
> On Mon, Aug 11, 2008 at 9:15 AM, <[EMAIL PROTECTED]> wrote:
> > [CODE]
> > f=StringIO.StringIO()
> > f.write('data analysis')
> > f.write(urllib.urlopen("http://localhost/path2Libs/myLibs.py";,
> > urllib.urlencode(TheData)))
> > f.write("")
> >
> > print "Content-type: text/html\n"
> > print f.read()
> > f.close()
> > [/CODE]
> >
> > What is wrong with this approach/code? Is there an easier way of doing it?
>
> A StringIO object works a lot like a file. When you write to it, it
> keeps track of the current position in the file. When you read from
> it, it reads from the current position to the end of the file. Once
> you're done writing to the StringIO object, you can rewind the
> position to the beggining and then read to the end, like this:
>
> f = StringIO.StringIO()
> f.write('This is some data')
> f.seek(0)
> print f.read()
>
> StringIO objects also have a special getvalue() method, which allows
> you to get the entire contents without changing the current position.
> You can replace your f.read() with f.getvalue() without having to mess
> with seek(), but then your code won't work with real files, if that's
> important.
>
> --
> Jerry
> --
> http://mail.python.org/mailman/listinfo/python-list
--
http://mail.python.org/mailman/listinfo/python-list
Re: dynamically creating html code with python...
Hi,
Thanks for your patience.
I got the text displayed in the web browser with the following code:
[CODE]
f=StringIO.StringIO()
f.write('data analysis site')
f.write("This is a trial test")
f.write("")
print "Content-type: text/html\n"
print f.getvalue()
f.close()
[/CODE]
Now I am trying to put both the image and the text together, but the following
lines do not create the text with the chart that I expected.
[CODE]
f=StringIO.StringIO()
f.write('data analysis site')
f.write("This is a trial test")
f.write(urllib.urlopen("http://localhost/myLibs/ChartLib.py",urllib.urlencode(TheData)))
f.write("")
print "Content-type: text/html\n"
print f.getvalue()
f.close()
[/CODE]
I am wondering if urllib.urlopen is the command I need to revise.
Thanks for the pointers as well. I will look into them.
Jerry Hill <[EMAIL PROTECTED]> wrote :
> On Mon, Aug 11, 2008 at 12:26 PM, <[EMAIL PROTECTED]> wrote:
> > I have tried calling a script containing the code below from a web browser
> > and it did not get the text.
>
> You quoted my post that answered this question, but did not implement
> either of the two solutions I suggested. I continue to suggest that
> you either: f.seek(0) before you f.read(), or that you replace
> f.read() with f.getvalue().
>
> Also, you may want to read the docs on
> StringIO - http://docs.python.org/lib/module-StringIO.html
> File objects - http://docs.python.org/lib/bltin-file-objects.html
>
> --
> Jerry
> --
> http://mail.python.org/mailman/listinfo/python-list
--
http://mail.python.org/mailman/listinfo/python-list
Re: dynamically creating html code with python...
This makes sense. Thanks!
I managed to get what I wanted with something similar to what you suggested:
[CODE]
print "Content-Type: text/html\n\n"
html="""
data analysis site
This is a test
After image text
"""
print html % myChartsLib.myPlotType(TheData)
[/CODE]
and the script returns
[CODE]
f = StringIO.StringIO()
pylab.savefig(f)
return 'data:image/png,' + urllib.quote(f.getvalue())
[/CODE]
This works fine in Firefox, but not in IE7. Any ideas why?
BTW, you are right about me not having a clue about http. It's the first time I
try to do something with it. May be you could point me out to some good links
where I can learn.
I will take a look into Mako too.
Thanks again.
Bruno Desthuilliers <[EMAIL PROTECTED]> wrote :
> [EMAIL PROTECTED] 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 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 """
>
>
> data analysis site
>
>
> This is a trial test
> http://localhost/myLibs/ChartLib.py?%s"; />
>
>
> """ % 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.
> --
> http://mail.python.org/mailman/listinfo/python-list
--
http://mail.python.org/mailman/listinfo/python-list
Re: dynamically creating html code with python...
btw, credits for the code shown below also for:
http://bitworking.org/news/Sparklines_in_data_URIs_in_Python
[EMAIL PROTECTED] wrote :
> This makes sense. Thanks!
>
> I managed to get what I wanted with something similar to what you suggested:
>
> [CODE]
> print "Content-Type: text/html\n\n"
> html="""
>
>
>
> data analysis site
>
>
>
> This is a test
>
> After image text
>
> """
>
> print html % myChartsLib.myPlotType(TheData)
> [/CODE]
>
> and the script returns
>
> [CODE]
> f = StringIO.StringIO()
> pylab.savefig(f)
> return 'data:image/png,' + urllib.quote(f.getvalue())
> [/CODE]
>
> This works fine in Firefox, but not in IE7. Any ideas why?
>
> BTW, you are right about me not having a clue about http. It's the first time
> I try to do something with it. May be you could point me out to some good
> links where I can learn.
>
> I will take a look into Mako too.
>
> Thanks again.
>
> Bruno Desthuilliers <[EMAIL PROTECTED]> wrote :
>
> > [EMAIL PROTECTED] 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 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 """
> >
> >
> > data analysis site
> >
> >
> > This is a trial test
> > http://localhost/myLibs/ChartLib.py?%s"; />
> >
> >
> > """ % 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.
> > --
> > http://mail.python.org/mailman/listinfo/python-list
>
>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
--
http://mail.python.org/mailman/listinfo/python-list
