Pythonの教科書にある1行チャットを作ってみようと思い写経して
webサーバーにて実行したのですが画面が真っ白のままで何も映りません。
以前にも同じような質問をされている方がいましたので、そこにあるコードと
見比べたのですが、おんなじコードだったので行き詰ってしまいました。
アドバイスいただけましたら幸いです。
発生している問題・エラーメッセージ
コード実行時にanacondaプロンプトにはこのようなメッセージが出ていました。
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ... 127.0.0.1 - - [13/Dec/2019 07:46:23] "GET /cgi-bin/chat.py HTTP/1.1" 200 - 127.0.0.1 - - [13/Dec/2019 07:46:23] command: C:\Users\HP\Anaconda3\python.exe -u C:\Users\hoge\cgi-bin\chat.py "" 127.0.0.1 - - [13/Dec/2019 07:46:24] CGI script exited OK 127.0.0.1 - - [13/Dec/2019 07:46:33] code 404, message File not found 127.0.0.1 - - [13/Dec/2019 07:46:33] "GET /favicon.ico HTTP/1.1" 404 -
該当のソースコード
anakonnda コマンドプロンプトにて
python -m http.server --cgi 8080
を入力してローカル環境を設定した後
http://localhost:8080/cgi-bin/chat.py
にて実行しましたが画面は真っ白のままでした。
python
1 2 3#!/usr/bin/env python 4import cgi 5import cgitb 6import os.path 7import html 8 9cgitb.enable() 10FILE_LOG = "chat-log.txt" 11 12def print_html(body): 13 print("Content-type: text/html: charset=utf-8") 14 print("") 15 print(""" 16 <html><head><meta charset="utf-8"> 17 <title>チャット</title></head><body> 18 <h1>チャット</h1> 19 <div><form> 20 名前: <input type="text" name="name" size="8"> 21 本文: <input type="text" name="body" size="20"> 22 <input type="submit" value="発言"> 23 <input type="hidden" name="mode" value="write"> 24 </form></div><hr> 25 {0} 26 </body></html> 27 """.format(body)) 28 29def mode_read(form): 30 log = "" 31 if os.path.exists(FILE_LOG): 32 with open(FILE_LOG, "r", encoding='utf-8') as f: 33 log = f.read() 34 print_html (log) 35 36def jump(url): 37 print("status: 301 moved permanently") 38 print("location:" + url) 39 print("") 40 print('<html><head>') 41 print('<meta http-equiv="refresh" content="0;'+url+'">') 42 print('</head><body>') 43 print('<a herf="'+url+'">jump</a></body></html>') 44 45def mode_write(form): 46 name = form.getvalue("name", "no name") 47 body = form.getvalue("body", "") 48 name = html.escape(name) 49 body = html.escape(body) 50 51 with open(FILE_LOG, "a+", encoding='utf-8') as f: 52 f.write("<p>{0}: {1}</p><hr>\n".format(name,body)) 53 jump('chat.py') 54 55def main(): 56 form = cgi.FieldStorage() 57 mode = form.getvalue("mode", "read") 58 if mode =="read": mode_read(form) 59 elif mode =="write": mode_write(form) 60 else: mode_read(form) 61 62if __name__ =="__main__": # --- 63 main()
コード内にて間違いがあるのかとも思い何度も見直しましたが
解らないため、お願いいたします。
試したこと
補足情報(FW/ツールのバージョンなど)
Windows10
pytho3.7
回答1件
あなたの回答
tips
プレビュー