HTTP通信で情報を受け取る方法とその情報をwebサーバーのプログラムで処理する方法

投稿者: Anonymous

表記の件につきましてご教授願えればと存じます。
以下がプログラムのコードです。

#!/usr/bin/env python

import datetime
import cgi
import cgitb
cgitb.enable()

http_body='''<html>
 <head>
  <meta charset="UTF-8"/>
   <title>today's fortune</title>
 </head>
 <body>
 {month} is your birth month,today is {fortune} for you ! 
 </body>
 </html>'''

 #URLのパラメーターから、monthを取得(整数に変換)
param_data=cgi.FieldStorage()
month=int(parama_date.getvalue("month"))
today=datetime.date.today()

contents={}
contents["month"]=month
contents["fortune"]=["a happy day","a bad day","a brilliant day"]
[today.day*month%6]

print("Content-type:text/html")
print("")
print(http_body.format(**contents))

___________________________________________

こちらをターミナル上で確認したところ以下のエラーが出ました。

The above is a description of an error in a Python program, formatted
     for a Web browser because the 'cgitb' module was enabled.  In case you
     are not reading this in a Web browser, here is the original traceback:

Traceback (most recent call last):
  File "fortune_month.py", line 20, in &lt;module&gt;
    month=int(parama_date.getvalue("month"))
NameError: name 'parama_date' is not defined

CGIに対応したwebブラウザに以下のURLを打ち込むと以下のようなエラーが返ってきました。

<URL>

http://localhost:8000/cgi-bin/fortune_month/py?month=8

<エラー>

essage: No such CGI script ('/cgi-bin/fortune_month.py').
Error code explanation: HTTPStatus.NOT_FOUND - Nothing matches the given URI.

どうぞよろしくお願いいたします。

解決

原因はすべてtypo(タイプミス)です。変数名も、

parama_date

-> param_data

URLも。

http://localhost:8000/cgi-bin/fortune_month/py?month=8

-> http://localhost:8000/cgi-bin/fortune_month.py?month=8

一致しなければならない箇所は、コピペするなどして、typoを回避するようにして下さい。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *