체크박스(Checkbox)는 사용자가 여러 개의 옵션을 동시에 선택할 수 있어야 할 때 사용됩니다. 라디오 버튼과 달리 하나의 그룹에서 복수 선택이 가능하기 때문에 설문조사, 관심 분야 선택 등 웹 폼에서 널리 활용됩니다. 이 글에서는 HTML 폼으로 체크박스 데이터를 전송하고, Python CGI 스크립트에서 해당 값을 받아 처리하는 방법을 알아보겠습니다.
HTML 폼 예제
다음은 두 개의 체크박스를 포함하는 HTML 폼 코드입니다.
<form action = "/cgi-bin/checkbox.cgi" method = "POST" target = "_blank"> <input type = "checkbox" name = "maths" value = "on" /> Maths <input type = "checkbox" name = "physics" value = "on" /> Physics <input type = "submit" value = "Select Subject" /> </form>
주요 속성 설명
- action: 폼 데이터가 전송될 CGI 스크립트의 경로를 지정합니다.
- method="POST": 데이터를 HTTP 요청 본문에 담아 전송합니다.
- target="_blank": 처리 결과를 새 창(또는 새 탭)에 표시합니다.
- name: 각 체크박스를 구분하는 키 값으로, CGI 스크립트에서 이 이름으로 데이터를 조회합니다.
실행 결과
위 코드를 브라우저에서 열면 다음과 같은 체크박스 폼이 화면에 나타납니다.

checkbox.cgi 스크립트 작성하기
웹 브라우저에서 전달된 체크박스 입력값을 처리하는 CGI 스크립트는 아래와 같습니다.
#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
if form.getvalue('maths'):
math_flag = "ON"
else:
math_flag = "OFF"
if form.getvalue('physics'):
physics_flag = "ON"
else:
physics_flag = "OFF"
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Checkbox - Third CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> CheckBox Maths is : %s</h2>" % math_flag
print "<h2> CheckBox Physics is : %s</h2>" % physics_flag
print "</body>"
print "</html>"
스크립트 동작 원리
- 모듈 임포트:
cgi모듈로 폼 데이터를 다루고,cgitb모듈로 오류 발생 시 디버그 정보를 브라우저에 표시할 수 있도록 준비합니다. - FieldStorage 생성:
cgi.FieldStorage()인스턴스를 만들어 전송된 폼 데이터를 읽어옵니다. - 값 확인:
getvalue('maths')와getvalue('physics')를 호출해 각 체크박스가 선택되었는지 확인합니다. 체크박스는 선택된 경우에만 값이 전송되므로, 값이 없으면None이 반환됩니다. - 결과 출력: 먼저
Content-type:text/html헤더를 출력한 뒤, 각 체크박스의 ON/OFF 상태를 HTML로 렌더링합니다.
참고: 위 코드는 Python 2 문법(print 문)을 기준으로 작성되었습니다. Python 3 환경에서는 print() 함수 형태로 수정해야 하며, cgi 모듈은 Python 3.13부터 표준 라이브러리에서 제거되었으므로 신규 프로젝트에서는 Flask, Django 같은 웹 프레임워크 사용을 권장합니다.