Printing HTML in Python CGI

47,036

Solution 1

Python supports multiline strings, so you can print out your text in one big blurb.

print '''<html>
<head><title>My first Python CGI app</title></head>
<body>
<p>Hello, 'world'!</p>
</body>
</html>'''

They support all string operations, including methods (.upper(), .translate(), etc.) and formatting (%), as well as raw mode (r prefix) and the u unicode prefix.

Solution 2

If that big html file is called (for example) 'foo.html' and lives in the current directory for your CGI script, then all you need as your script's body is:

print "Content-type: text/html"
print
with open('foo.html') as f:
  print f.read()

If you're stuck with Python 2.5, add from __future__ import with_statement as the start of your module's body. If you're stuck with an even older Python, change the last two lines into

print open('foo.html').read()

Note that you don't need to import cgi when you're using none of the functionality of the cgi module, which is the case both in your example and in this answer.

Share:
47,036

Related videos on Youtube

Parker
Author by

Parker

Duke 2013 Microsoft PM '13-Present I like Python. Also, turtles.

Updated on August 03, 2020

Comments

  • Parker
    Parker almost 4 years

    I've been teaching myself python and cgi scripting, and I know that your basic script looks like

    #!/usr/local/bin/python
    import cgi
    print "Content-type: text/html"
    print 
    print "<HTML>"
    print  "<BODY>"
    print "HELLO WORLD!"
    print "</BODY>"
    print "</HTML>"
    

    My question is, if I have a big HTML file I want to display in python (it had lines and lines of code and sone JS in it) do I have to manually add 'print' in front of each line and turn "s into \" , etc? Or is there a method or script that could convert it for me?

    Thanks!