Python の CGI の機能を使用して form の内容( GET と POST 混在 )を取得して使用しますXAMPP で Python を実行できるようにするには、httpd.conf の 『AddHandler cgi-script .cgi .pl .asp』 に .py を追加します
Windows では、Python の先頭に Python の実行プログラムの場所を記述しなくても、Windows のレジストリに設定して動作できるようにする事ができるようです ( 💘 ScriptInterpreterSource Registry-Strict ) Python のダウンロードとインストールは こちら(Windows 環境のPython) がとても参考になります sample_03.py
form_data = {} fields = [ "field1", "field2", "field3", "field4", "send" ] for field_name in fields: if field_name not in form: form_data[field_name] = "" else: form_data[field_name] = form.getvalue(field_name)cgi.FieldStorage() で取得された from をディクショナリである form_data に変換して使用します
#!C:\python\python.exe
import cgi
import cgitb
cgitb.enable()
import sys
import io
import os
import urllib.parse
from xml.sax.saxutils import *
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
print("Content-Type: text/html; charset=utf-8")
print( "Expires: Thu, 19 Nov 1981 08:52:00 GMT" )
print( "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" )
print( "Pragma: no-cache" )
print()
print( "<div style='padding:30px;font-size:20px;word-break:break-all;'>" )
form = cgi.FieldStorage()
# form 用データの内容です
print( str(form) + "<br>")
form_data = {}
fields = [ "field1", "field2", "field3", "field4", "send" ]
for field_name in fields:
if field_name not in form:
form_data[field_name] = ""
else:
form_data[field_name] = form.getvalue(field_name)
# 以降で使用可能なディクショナリの内容です
print(str(form_data) + "<br>")
print( "</div>" )
view = f"""<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css">
<style>
#main {{
padding: 30px;
font-size: 24px;
}}
form {{
margin-bottom: 20px;
}}
.inline {{
display: inline-block;
}}
.ttl {{
width: 100px;
}}
</style>
</head>
<body>
<div id="main">
<form method="get">
<div>
<div class="inline ttl">氏名</div>
<div class="inline"><input type="text" name="field1" value="{form_data["field1"]}"></div>
</div>
<div>
<div class="inline ttl">フリガナ</div>
<div class="inline"><input type="text" name="field2" value="{form_data["field2"]}"></div>
<div class="inline ml-2"><input type="submit" name="send" value="送信"></div>
</div>
</form>
<form method="post">
<div>
<div class="inline ttl">氏名</div>
<div class="inline"><input type="text" name="field3" value="{form_data["field3"]}"></div>
</div>
<div>
<div class="inline ttl">フリガナ</div>
<div class="inline"><input type="text" name="field4" value="{form_data["field4"]}"></div>
<div class="inline ml-2"><input type="submit" name="send" value="送信"></div>
</div>
</form>
</div>
</body>
</html>"""
print(view)
関連する記事 XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 1 ) XAMPP + Python( 3.8 ) でWEBアプリの基礎部分構築 : その ( 2 ) : QUERY_STRING と 画面定義 XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 3 ) : cgi.FieldStorage() から ディクショナリ XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 4 ) : リダイレクトと関数とログ出力
|
|
【Pythonの最新記事】
- Python : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- Python : shift_jis の3列の csv フォーマットのデータを ttk.Treeview に表示する
- Python : ttk.Treeview で表形式を使用して環境変数の一覧表示
- XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 1 )
- XAMPP + Python( 3.8 ) で WEBアプリの基礎部分構築 : その ( 4 ) : リダイレクトと関数とログ出力
- XAMPP + Python( 3.8 ) でWEBアプリの基礎部分構築 : その ( 2 ) : QUERY_STRING と 画面定義
- Python + MySQL + IFRAME + Bootstrap : 問い合せ WEB アプリテンプレート
- MySQL Connector/Python の使用方法概要のまとめ
- Python3 : 言語的デザインの特徴と要点
- Python ドキュメントに沿った、テキストファイル読み込みの理解
- Python3 でメール送信 ( さくらインターネット )
- Python 3.6 で GET/POST メソッドを想定した CGI 用の簡易テンプレートを作成してみました
- Eclipse + Python(Pydev) : pywin32(COM使用の為) + MySQL Connector/ODBC でループ処理をしながら更新
- Eclipse + Python(Pydev) : MySQL Connector/Python でループ処理をしながら更新
- Pleiades Eclipse 4.7 Oxygen で Python を使って MySQL にアクセスする
- Python 3.4 : インストールと最初にする事( Windows )
- Python3.x : URL を読み出す( bytes から string )
- Python3.1 : URLを読み出して、バイナリのままファイル出力する
- Python3.1 : クッキーを保持して二つの URL にアクセスする
- Python3.1 : URLを読み出してファイルに出力






