Python Glossary English

все Python 3до 3.13Удалено из стандартной библиотекипонятие

cgi

удалённые модули

Модуль для CGI-скриптов: разбор полей формы и заголовков. Удалён в Python 3.13 — используйте urllib.parse.parse_qs, email.message или веб-фреймворк.

Синтаксис

import cgi  # до 3.13

cgi разбирал запрос, пришедший CGI-скрипту: cgi.FieldStorage() читал поля формы, cgi.parse_header() делил заголовок на значение и параметры. Убран по PEP 594: CGI, где на каждый запрос запускается новый процесс, давно вытеснен WSGI и ASGI. Как переписать: строку запроса GET разбирает urllib.parse.parse_qs (или parse_qsl), заголовок вида 'text/html; charset=utf-8' — email.message.EmailMessage через get_content_type() и get_param(), тело multipart/form-data — пакет email или библиотека multipart. Новый код пишите сразу на фреймворке (Flask, Django, FastAPI). Пакет legacy-cgi на PyPI возвращает старый модуль для кода, который трогать нельзя.

Примеры

# Python 3.13+
try:
    import cgi
except ModuleNotFoundError as e:
    print(type(e).__name__)  # → ModuleNotFoundError
# Python 3.13+
from urllib.parse import parse_qs
from email.message import EmailMessage
print(parse_qs('name=Ann&tag=a&tag=b'))  # → {'name': ['Ann'], 'tag': ['a', 'b']}
msg = EmailMessage()
msg['Content-Type'] = 'text/html; charset=utf-8'
print(msg.get_content_type(), msg.get_param('charset'))  # → text/html utf-8
import cgi
print(cgi.parse_header('text/html; charset=utf-8'))
# → ('text/html', {'charset': 'utf-8'})

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности