Python CGI: Difference between revisions
No edit summary |
|||
Line 50: | Line 50: | ||
* [[Python CGI checklist]] | * [[Python CGI checklist]] | ||
== Python 3== | == Python 3 == | ||
=== Mini server === | |||
=== Unicode issue with Apache === | |||
https://stackoverflow.com/questions/9322410/set-encoding-in-python-3-cgi-scripts#19574801 | https://stackoverflow.com/questions/9322410/set-encoding-in-python-3-cgi-scripts#19574801 | ||
A simple test CGI... | |||
```python | |||
#!/usr/bin/env python3 | |||
import sys | |||
import cgitb; cgitb.enable() | |||
print('Content-Type: text/html; charset=utf-8') | |||
print() | |||
print('<html><body><pre>' + sys.stdout.encoding + '</pre>h€lló wörld<body></html>') | |||
``` |
Revision as of 06:31, 17 April 2018
Sample code
Hello World
#!/usr/bin/python
print ("Content-type: text/html;charset=utf-8\n")
print ("Hello world!")
Dump the env!
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import cgi
cgi.print_environ()
Receive some text from a form
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import cgitb; cgitb.enable()
import cgi
q = cgi.FieldStorage()
text = q.getvalue("text", "")
print ("Content-type: text/html;charset=utf-8\n")
# Print any received text in a purple box
print ("""<h1>Hello</h1>""")
if text:
print ("""<div style="border: 5px solid purple">""")
print text
print ("""</div>""")
# Print the form
print ("""<form method="get" action="">
<textarea name="text"></textarea>
<input type="submit" />
</form>""")
RTFM
Python has a CGI module that takes care of many things like working with values posted form a form or handling an uploaded file.
http://docs.python.org/2/library/cgi.html#module-cgi
Python CGI Checklist
Python 3
Mini server
Unicode issue with Apache
https://stackoverflow.com/questions/9322410/set-encoding-in-python-3-cgi-scripts#19574801
A simple test CGI...
```python
- !/usr/bin/env python3
import sys import cgitb; cgitb.enable()
print('Content-Type: text/html; charset=utf-8') print()
print('<html><body>
' + sys.stdout.encoding + '
h€lló wörld<body></html>')
```