3

我只是创建了一个 python 服务器:

python -m SimpleHTTPServer

我有一个.htaccess(我不知道它是否对python服务器有用):

AddHandler cgi-script .py
Options +ExecCGI

现在我正在编写一个简单的 python 脚本:

#!/usr/bin/python
import cgitb
cgitb.enable()
print 'Content-type: text/html'
print '''
<html>
     <head>
          <title>My website</title>
     </head>
     <body>
          <p>Here I am</p>
     </body>
</html>
'''

我将 test.py (我的脚本名称)作为一个执行文件,其中包含:

chmod +x test.py

我用这个地址在 Firefox 中启动:(http : //) 0.0.0.0:8000/test.py

问题,脚本没有执行......我在网页中看到代码......服务器错误是:

localhost - - [25/Oct/2012 10:47:12] "GET / HTTP/1.1" 200 -
localhost - - [25/Oct/2012 10:47:13] code 404, message File not found
localhost - - [25/Oct/2012 10:47:13] "GET /favicon.ico HTTP/1.1" 404 -

如何简单地管理 python 代码的执行?是否可以在 python 服务器中编写来执行 python 脚本,例如:

import BaseHTTPServer
import CGIHTTPServer
httpd = BaseHTTPServer.HTTPServer(\
    ('localhost', 8123), \
CGIHTTPServer.CGIHTTPRequestHandler)
###  here some code to say, hey please execute python script on the webserver... ;-)
httpd.serve_forever()

或者是其他东西...

4

3 回答 3

8

你在正确的轨道上CGIHTTPRequestHandler,因为.htaccess文件对内置的 http 服务器没有任何意义。有一个CGIHTTPRequestHandler.cgi_directories变量指定可执行文件被视为 cgi 脚本的目录(这里是检查本身)。您应该考虑移动test.pycgi-binorhtbin目录并使用以下脚本:

cgiserver.py:

#!/usr/bin/env python3

from http.server import CGIHTTPRequestHandler, HTTPServer

handler = CGIHTTPRequestHandler
handler.cgi_directories = ['/cgi-bin', '/htbin']  # this is the default
server = HTTPServer(('localhost', 8123), handler)
server.serve_forever()

cgi-bin/test.py:

#!/usr/bin/env python3
print('Content-type: text/html\n')
print('<title>Hello World</title>')

你最终应该得到:

|- cgiserver.py
|- cgi-bin/
   ` test.py

运行python3 cgiserver.py并发送请求到localhost:8123/cgi-bin/test.py. 干杯。

于 2012-10-25T10:57:28.890 回答
3

您是否尝试过使用Flask?这是一个轻量级的服务器库,使这变得非常容易。

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return '<title>Hello World</title>'


if __name__ == '__main__':
    app.run(debug=True)

在这种情况下<title>Hello World</title>,返回值呈现为 HTML。您还可以将 HTML 模板文件用于更复杂的页面。

这是一个很好的简短的 youtube教程,可以更好地解释它。

于 2016-09-21T14:27:56.390 回答
0

您可以使用更简单的方法并使用--cgi启动 http 服务器的 python3 版本的选项:

python3 -m http.server --cgi

正如命令所指出的:

python3 -m http.server --help
于 2020-07-02T09:07:55.523 回答