CGI 프로그램에 라디오 버튼 데이터 전달하기
라디오 버튼(Radio Button)은 여러 선택지 중 단 하나의 옵션만 선택해야 할 때 사용하는 폼 요소입니다. 체크박스와 달리 같은 name 속성을 가진 라디오 버튼 그룹에서는 한 번에 하나의 값만 전송됩니다.
1. 라디오 버튼이 포함된 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>
위 코드를 실행하면 브라우저에 다음과 같은 폼이 표시됩니다.
○ Maths ○ Physics [Select Subject]
2. 라디오 버튼 입력을 처리하는 radiobutton.py 스크립트
웹 브라우저에서 전달된 라디오 버튼 값을 처리하는 CGI 스크립트는 아래와 같습니다.
#!/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.FieldStorage()는 POST 또는 GET 방식으로 전달된 폼 데이터를 파싱하여 딕셔너리 형태로 저장합니다. getvalue('subject') 메서드를 호출하면 라디오 버튼 그룹 'subject'에서 선택된 값(예: maths 또는 physics)을 문자열로 반환받을 수 있습니다.
만약 사용자가 아무 항목도 선택하지 않고 제출하면 getvalue()는 None을 반환하므로, 위 예제처럼 조건문으로 이 경우를 처리해 기본값("Not set")을 지정하는 것이 안전합니다.
참고 사항
위 예제는 파이썬 2 문법(print 문)을 기준으로 작성되었습니다. 파이썬 3에서는 print() 함수를 사용해야 하며, cgi 모듈은 파이썬 3.13부터 공식적으로 제거(deprecated)되었으므로 최신 프로젝트에서는 Flask, Django 같은 웹 프레임워크나 html.parser, WSGI 기반 방식을 사용하는 것이 권장됩니다. 다만 레거시 시스템 유지보수나 CGI 동작 원리 학습에는 여전히 유용한 예제입니다.