라디오 버튼(Radio Button)이란?
라디오 버튼은 여러 개의 선택지 중에서 단 하나의 옵션만 선택해야 하는 경우에 사용되는 폼 요소입니다. 체크박스와 달리 같은 name 속성을 가진 라디오 버튼 그룹에서는 한 번에 하나의 항목만 선택할 수 있습니다.
HTML 폼 예제
다음은 두 개의 라디오 버튼을 포함하는 폼의 HTML 코드 예제입니다.
<form action = "/cgi-bin/radiobutton.py" method = "post" target = "_blank"> <input type = "radio" name = "subject" value = "maths" /> Maths <input type = "radio" name = "subject" value = "physics" /> Physics <input type = "submit" value = "Select Subject" /> </form>
위 코드를 실행하면 아래와 같은 폼이 화면에 표시됩니다.

라디오 버튼 데이터를 처리하는 CGI 스크립트
다음은 웹 브라우저에서 전달된 라디오 버튼 입력값을 처리하는 radiobutton.py 스크립트입니다.
#!/usr/bin/python
# CGI 처리를 위한 모듈 임포트
import cgi, cgitb
# FieldStorage 인스턴스 생성
form = cgi.FieldStorage()
# 필드에서 데이터 가져오기
if form.getvalue('subject'):
subject = form.getvalue('subject')
else:
subject = "Not set"
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Radio - Fourth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"
코드 동작 원리
- 모듈 임포트:
cgi모듈은 폼 데이터를 파싱하는 기능을 제공하고,cgitb모듈은 오류 발생 시 디버깅 정보를 브라우저에 표시해 줍니다. - FieldStorage 객체 생성:
cgi.FieldStorage()를 통해 POST 또는 GET 방식으로 전송된 폼 데이터에 접근할 수 있습니다. - 값 읽기:
form.getvalue('subject')는 'subject'라는 이름의 라디오 버튼 그룹에서 선택된 값을 반환합니다. 라디오 버튼은 하나만 선택되므로 문자열 하나가 반환됩니다. - 예외 처리: 아무것도 선택하지 않고 제출한 경우를 대비해
if문으로 값이 존재하는지 확인하고, 없으면 "Not set"을 출력합니다. - 결과 출력: HTTP 헤더와 함께 HTML 문서를 출력하여 사용자가 선택한 과목을 화면에 보여줍니다.
참고 사항
Python의 cgi 모듈은 버전 3.11부터 지원 중단(deprecated)되었으며, 3.13에서는 완전히 제거되었습니다. 새로운 프로젝트에서는 Flask, Django와 같은 현대적인 웹 프레임워크를 사용하는 것이 좋습니다. 다만 레거시 시스템 유지보수나 CGI 동작 원리 학습 목적으로는 위 예제가 여전히 유용한 참고 자료가 됩니다.