🐡

[Python CGI] (3) URLのクエリパラメータを取得

2021/01/01に公開

やること

PythonでCGIプログラミングやってみる。今回は、URLのクエリパラメータを表示してみる

ソース

test03.html,pycgi03.pyの2つのファイルを用意します。
**area01=ABC&area02=XYZ**がCGIに渡すパラメータです。

.
├── cgi-bin
│   └── pycgi03.py
└── test03.html

test03.htmlは、CGI(pycgi03.py)を呼び出す処理があります。

test03.html
<HTML>
    <HEAD>
    <TITLE>CGIの起動サンプル(JavaScript)</TITLE>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function doCGI(url)
    {
            document.location.href = url;
    }
    //-->
    </SCRIPT>
    </HEAD>
    <BODY onLoad="doCGI('./cgi-bin/pycgi03.py?area01=ABC&area02=XYZ')">
    </BODY>
    </HTML>

pycgi03.pyは、os.environ.get('QUERY_STRING')でURLのクエリパラメータを取得します。

pycgi03.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import cgi
import sys
import io
import time
import os

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
getVal = os.environ.get('QUERY_STRING')
grpList = getVal.split('&')
grpDict = {}
for grp in grpList:
    tmpList = grp.split('=')
    grpDict[tmpList[0]] = tmpList[1]

print("[Python CGI Test 03]",file=sys.stderr)
print('Content-Type: text/html; charset=UTF-8\n')
html_body = """
<h1>[Python3 CGI test 03]</h1>
<h2>area01 = "%s"</h2>
<h2>area02 = "%s"</h2>
"""
form = cgi.FieldStorage()
area01 = grpDict["area01"]
area02 = grpDict["area02"]
print(html_body % (area01, area02))

動かしてみる

Python3でWebサーバーを起動します。

$ sudo python3 -m http.server 8000 --cgi

サイト http://localhost:8000/test03.htmlを開き、以下のように表示されれば成功です。

Discussion