Когда браузер производит HTTP-запрос, то из него разрешается передать какие-либо значения в программу на Python, находящуюся на веб-сервере. Эти значения могут быть использованы в программе, а также переданы в обратном ответе браузеру.

Для обработки данных, переданных из веб-браузера через HTTP-запрос в программу на Python, допустимо использовать модуль cgi. В нем есть конструктор FieldStorage(), который создает объект, хранящий переданные данные в виде словаря, содержащего пары ключ:значение. Любое значение можно будет получить с помощью метода getvalue() объекта FieldStorage, указав соответствующее имя ключа в виде параметра для данного метода.

Браузер может передавать данные в программу, используя метод GET, который просто добавляет к URL-адресу программы пару в виде ключ=значение.

Эта пара следует после символа вопросительного знака, стоящего после имени файла. Таких пар может быть передано несколько, тогда они отделяются символом &, например script.py?key1=value1&key2=value2.

#!C:\Users\1\AppData\Local\Programs\Python\Python35-32\python.exe
#1.py

import cgi
data = cgi.FieldStorage()
name = data.getvalue('name')
surname = data.getvalue('surname')

print('Content-type:text/html\r\n\r\n')
print('<!DOCTYPE HTML>')
print('<html lang="ru">')
print('<head>')
print('<meta charset="UTF-8">')
print('<title>Результат работы Python-скрипта</title>')
print('</head>')
print('<body>')
print('<h1>', name, surname, '</h1>')
print('<a href="/get.html">Назад</a>')
print('</body>')
print('</html>')

<!-- get.html -->
<!DOCTYPE HTML>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Список писателей</title>
</head>
<body>
<h1>
<a href="/cgi-bin/1.py?name=Александр&surname=Пушкин">Александр</a>
<a href="/cgi-bin/1.py?name=Сергей&surname=Есенин">Сергей</a>
<a href="/cgi-bin/1.py?name=Антон&surname=Чехов">Антон</a>
</h1>
</body>
</html>

Значения, добавляемые к URL-адресу, видны в адресной строке браузера, поэтому метод GET не следует использовать для отправки веб-серверу паролей либо других конфиденциальных данных.