如何设置Python CGI服务器?

时间:2011-11-16 18:42:00

标签: python html windows http cgi

我在Windows上运行Python 3.2。我想在我的机器上运行一个简单的CGI服务器用于测试目的。这是我到目前为止所做的:

我使用以下代码创建了一个python程序:

import http.server
import socketserver
PORT = 8000
Handler = http.server.CGIHTTPRequestHandler
httpd = socketserver.TCPServer(("", PORT), Handler)
httpd.serve_forever()

在同一个文件夹中,我创建了一个简单的HTML文件“index.html”。然后我运行程序并在我的Web浏览器中转到http://localhost:8000/,页面显示成功。接下来,我在同一目录中创建了一个名为“hello.py”的文件,其代码如下:

import cgi
import cgitb
cgitb.enable()
print("Content-Type: text/html;charset=utf-8")
print()
print("""<html><body><p>Hello World!</p></body></html>""")

现在,如果我转到http://localhost:8000/hello.py,我的网络浏览器会显示上面的完整代码,而不仅仅是“Hello World!”。如何在服务之前让python执行CGI代码?

3 个答案:

答案 0 :(得分:3)

看看docs for CGIHTTPRequestHandler,它描述了它如何解决哪些文件是CGI脚本。

答案 1 :(得分:2)

虽然没有正式弃用,cgi模块使用起来有点笨拙;这些天大多数人都在使用其他东西(其他任何东西!)

例如,您可以使用wsgi接口以在许多http服务器中轻松高效地提供服务的方式编写脚本。为了帮助您入门,您甚至可以使用内置的wsgiref处理程序。

def application(environ, start_response):
    start_response([('content-type', 'text/html;charset=utf-8')])
    return ['<html><body><p>Hello World!</p></body></html>'.encode('utf-8')]

并提供服务(可能在同一档案中):

import wsgiref.simple_server
server = wsgiref.simple_server.make_server('', 8000, application)
server.serve_forever()

答案 2 :(得分:1)

启动cgi服务器进行开发的最简单方法如下:

  • 创建包含所有html和其他文件的基本目录
  • 使用所有cgi文件创建一个名为cgi-bin的子目录
  • cd到基本目录
  • 运行python -m http.server --cgi -b 127.0.0.1 8000

现在您可以连接到http://localhost:8000并使用cgi脚本来保存html代码