windows 如何设置Python CGI服务器?

x9ybnkn6  于 2023-06-24  发布在  Windows
关注(0)|答案(4)|浏览(150)

我在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()

在同一个文件夹中,我创建了“index.html”,一个简单的HTML文件。然后我运行程序,在网页浏览器中转到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,我的Web浏览器会显示上面的完整代码,而不仅仅是“Hello World!“.如何让python在提供CGI代码之前执行它?

vqlkdk9b

vqlkdk9b1#

看看CGIHTTPRequestHandler的文档,其中描述了它如何确定哪些文件是CGI脚本。

jckbn6z7

jckbn6z72#

虽然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()
dsekswqp

dsekswqp3#

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

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

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

h9a6wy2h

h9a6wy2h4#

这就是我的工作:

#Just runs a basic Python HTTP web server to host everything in this folder.
import http.server
import functools
import pathlib

port = 8000
launchPath = str(pathlib.Path(__file__).parent.resolve())

Handler = functools.partial(http.server.CGIHTTPRequestHandler, directory = launchPath)

with http.server.HTTPServer(("", port), Handler) as httpd:
  print("Serving files in: " + launchPath)
  print("Port: " + str(port))
  httpd.serve_forever()

https://docs.python.org/3/library/http.server.html#http.server.CGIHTTPRequestHandlerhttps://docs.python.org/3/library/http.server.html#http.server.HTTPServer

相关问题