Почему этот скрипт Python CGI дает белую страницу? - PullRequest
0 голосов
/ 03 июня 2018

Я не понимаю, почему этот код дает мне белую страницу в моем браузере.Это мой сценарий:

# H8_webserver_cgi_run_v2.py
# Before the server is running:
# http://localhost:8080/H8_cgi/test-1.py

from http.server import HTTPServer, CGIHTTPRequestHandler
## cgi_directories
## This defaults to
['/cgi-bin', '/htbin'] 
CGIHTTPRequestHandler.cgi_directories=['/H8_cgi']
port = 8080
httpd = HTTPServer(('127.0.0.1', port), CGIHTTPRequestHandler)
print("Starting simple_httpd on port: " + str(httpd.server_port))
print("cgi-dirs: ",CGIHTTPRequestHandler.cgi_directories)
print('try: http://localhost:8080/H8_cgi/test1.html')
import webbrowser
webbrowser.open_new_tab('http://localhost:8080/H8_cgi/test1.html')
# First the browser, later the server. How can this possibly work? 
print('First the browser, later the server. How can this possibly work?')
httpd.serve_forever()

HTML-страница, на которую он ссылается:

<!DOCTYPE html>

    
        
        <!-- Show nicely on phones and tablets -->
        
        H8: Simpele CGI-demo
    
    
        Een formulier verwerken met CGI. 
            Vul het formulier in.
        

  <!-- door <pre>te gebruiken hoeven we ons niet te bekommeren over html-opmaak -->
  
  Uw geslacht               Man
Vrouw
I love Python Ik kan Python dromen Ik ben een Pythonista Uw naam Uw auto(s)
Klaar

Все, что я получил, это белая страница браузера.И это обратная связь с сервером:

"C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ python.exe" "E: / Anton / Python scripts / H8_webserver_cgi_run_v2.py"Запуск simple_httpd для порта: 8080 cgi-dirs: ['/ H8_cgi'] try: http://localhost:8080/H8_cgi/test1.html Сначала браузер, затем сервер.Как это может работать?127.0.0.1 - - [03 / Jun / 2018 18:20:18] "GET /H8_cgi/test1.html HTTP / 1.1" 200 -

127.0.0.1 - - [03 / Jun / 2018 18:20:18] команда: E: \ Anton \ H8_cgi \ test1.html ""

Исключительная ситуация при обработке запроса от ('127.0.0.1', 52021)

Traceback (самая последняяпоследний вызов):

Файл "C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ socketserver.py", строка 313, в _handle_request_noblock self.process_request (запрос, адрес клиента)Файл "C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ socketserver.py", строка 341, в process_request self.finish_request (запрос, адрес клиента) Файл "C: \ Users \ Dell E6430 \"AppData \ Local \ Programs \ Python \ Python35 \ lib \ socketserver.py ", строка 354, в файле finish_request self.RequestHandlerClass (запрос, адрес клиента, self) Файл" C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ "Python35 \ lib \ socketserver.py ", строка 681, в init self.handle () Файл" C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ P "ython35 \ lib \ http \ server.py ", строка 422, в дескрипторе self.handle_one_request () Файл" C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ http \ server.py ",строка 410, в методе handle_one_request () Файл "C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ http \ server.py", строка 645, в файле do_GET f = self.send_head ()«C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ http \ server.py», строка 953, в send_head возвращает self.run_cgi () файл «C: \ Users \ Dell E6430 \ AppData»\ Local \ Programs \ Python \ Python35 \ lib \ http \ server.py ", строка 1161, в файле run_cgi env = env Файл" C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ subprocess.py ", строка 676, в init restore_signals, start_new_session) Файл" C: \ Users \ Dell E6430 \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ subprocess.py ", строка 955, в _execute_childstartupinfo) OSError: [WinError 193]% 1 является geen geldige Win32-toepassing

HTML-документ находится в каталоге E: \ Anton \ H8_cgi \ test1.html То же самоеместоположение как сценарий.

Как я могу позволить этой вещи работать?

1 Ответ

0 голосов
/ 13 июня 2018

Я получил ответ о белой странице.Путь в CGIHTTPRequestHandler.cgi_directories = ['/ H8_cgi'] не был явным.Я изменил его на CGIHTTPRequestHandler.cgi_directories = ['E: \ Anton \ H8_cgi \'].Таким образом, абсолютный путь вместо относительного пути работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...