Программы и скрипты на Python могут делать запросы к веб сайтам и веб сервисам и получать от них данные с помощью методов GET и POST (а также другими HTTP методами: PUT, PATCH и DELETE).
Но что если вы хотите передавать данные из веб-страницы в скрипт Python?
Это можно реализовать несколькими способами.
Как в скрипте Python получить данные от веб-страницы методами GET и POST если Python настроен как CGI модуль веб-сервера Apache
Смотрите также: Как настроить веб-сервер Apache на запуск Python в Windows
В директории веб-сервера создадим подпапку test-python.
В ней создадим HTML файл с именем test-form.htm и следующим содержанием:
<!DOCTYPE html>
<head>
<title>ZaLinux.ru: An example of running Python on a web server</title>
</head>
<body>
<form action="program.py" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name"><br><br>
<label for="email">Surname:</label>
<input type="text" id="surname" name="surname"><br><br>
<label for="message">Information:</label><br>
<textarea id="info" name="info" rows="4" cols="30"></textarea><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
В этой же подпапке создадим файл program.py со следующим содержанием:
#!C:\python\python.exe
# Импорт модулей для обработки CGI
import cgi, cgitb
# Создание экземпляра FieldStorage
form = cgi.FieldStorage()
# Получение данных от полей формы
name = form.getvalue('name')
surname = form.getvalue('surname')
info = form.getvalue('info')
# Вывод HTTP заголовка
print ('Content-type: text/html\r\n\r\n')
# Вывод HTML кода с полученными данными
print ('<html>')
print ('<head>')
print ('<title>ZaLinux.ru: An example of running Python on a web server</title>')
print ('</head>')
print ('<body>')
print ('<em>Python script reports: </em>', '<br /><br />')
print ('<b>Name: </b>', name, '<br />')
print ('<b>Surname: </b>', surname, '<br />')
print ('<b>Extra information: </b>', info, '<br />')
print ('</body>')
print ('</html>')
В комментариях к коду даны пояснения. Для получения данных от формы используется form.getvalue().
Обратите внимание на первую строку с шебангом «#!C:\python\python.exe» - в вашем случае путь до файла python.exe может быть другим, поэтому отредактируйте строку в соответствии с вашей установкой Python.
Откроем адрес http://localhost/test-python/test-form.htm и заполним данные формы:
Отправим данные на сервер. Как можно убедиться, скрипт Python успешно получил данные из формы, отправленные методом POST на веб-сервер.
Аналогичный код используется для получения данных отправленных методом GET — достаточно изменить метод в строке <form action="program.py" method="get">:
<!DOCTYPE html>
<head>
<title>ZaLinux.ru: An example of running Python on a web server</title>
</head>
<body>
<form action="program.py" method="get">
<label for="name">Name:</label>
<input type="text" id="name" name="name"><br><br>
<label for="email">Surname:</label>
<input type="text" id="surname" name="surname"><br><br>
<label for="message">Information:</label><br>
<textarea id="info" name="info" rows="4" cols="30"></textarea><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Обратите внимание, что скрипты Python для использования их с CGI модулем веб-сервера нуждаются в доработке: скрипт должен перед показом данных отсылать HTTP заголовок. Если вы не доработает скрипт Python, то программа завершится ошибкой.
Связанные статьи:
- Как настроить веб-сервер Apache на запуск Python в Windows (100%)
- Apache для Windows (52.4%)
- Как запустить Apache на Windows (52.4%)
- Документация по Apache на русском языке (52.4%)
- Как подключить PHP к Apache на Windows (52.4%)
- Модуль Apache mod_alias (RANDOM - 52.4%)

