Как настроить сервер Python CGI? - PullRequest
4 голосов
/ 16 ноября 2011

Я использую Python 3.2 в Windows.Я хочу запустить простой 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,, мой веб-браузер отобразит полный код вышепросто "Привет, мир!"Как заставить Python выполнять код CGI перед его обслуживанием?

Ответы [ 2 ]

4 голосов
/ 16 ноября 2011

Взгляните на документы для CGIHTTPRequestHandler , которые описывают, как это работает, какие файлы являются сценариями CGI.

2 голосов
/ 16 ноября 2011

Официально не рекомендуется, но модуль 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...