学习3这个版本能与学习2差不多,只是这是来源于Head First Python书上的第九章的例子加上自己的一些改动,实现的功能是把输入栏中上的信息显示出来。首页代码如下:
<!DOCTYPE html>
<html>
<head>
<title> This is a example </title>
</head>
<body>
<br />
<br />
<form action = "cgi-bin/process-time.py" method="POST">
<b style="color:#800">Enter a timing value:</b>
<input type="Text" name="TimeValue" size=40>
<br />
<input type = "Submit" value="Send">
</form>
</body>
</html>
效果图如下:
这个时候我们还要建一个process-time.py的cgi程序,处理表单的内容,它的代码如下:
#!/usr/bin/env python3
import cgi
import os
import time
import sys
form = cgi.FieldStorage()
addr = os.environ['REMOTE_ADDR']
host = os.environ['REMOTE_HOST']
method = os.environ['REQUEST_METHOD']
cur_time = time.asctime(time.localtime())
print(host + ", " + addr + ", " + cur_time + ": " + method, file=sys.stderr)
for each_form_item in form.keys():
print(each_form_item + '->' +
form[each_form_item].value, end='', file=sys.stderr)
print(file=sys.stderr) # change line
print("Content-Type: text/html")
print("")
print("<html>")
print("<h2>CGI Script Output</h2>")
print("<p>")
print("The user entered data are:<br>")
print("<b>TimeValue:</b> " + form["TimeValue"].value + "<br>")
print("<br />")
print("<span>OK</span>")
print("</p>")
print("</html>")
测试效果:
先打开服务器
python simple_httpd.py
再在网址栏中输入localhost:10000,再在空白栏中输入3.14,按send键,会打开process-time.py处理程序,效果如下:
必须要观看一下现在服务器终端上打印出来的信息,通过引进sys模块中的重定向把输出打印到终端上: