드롭다운 상자(Drop Down Box)는 선택 가능한 옵션이 많지만 그중 하나 또는 두 개만 선택해야 하는 경우에 사용하는 폼 요소입니다. 사용자가 목록에서 항목을 선택하면 해당 값이 서버의 CGI 프로그램으로 전송되어 처리됩니다.
드롭다운 상자 예제
아래는 드롭다운 상자 하나를 포함한 HTML 폼 코드 예제입니다.
<form action = "/cgi-bin/dropdown.py" method = "post" target = "_blank"> <select name = "dropdown"> <option value = "Maths" selected>수학</option> <option value = "Physics">물리학</option> </select> <input type = "submit" value = "Submit"/> </form>
실행 결과
위 코드를 실행하면 다음과 같은 드롭다운 선택 폼이 화면에 표시됩니다.

CGI 스크립트 작성하기
이제 웹 브라우저에서 전송된 입력값을 처리하는 dropdown.py 스크립트를 살펴보겠습니다.
#!/usr/bin/python
# CGI 처리를 위한 모듈 임포트
import cgi, cgitb
# FieldStorage 인스턴스 생성
form = cgi.FieldStorage()
# 필드에서 데이터 가져오기
if form.getvalue('dropdown'):
subject = form.getvalue('dropdown')
else:
subject = "Not entered"
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Dropdown Box - Sixth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"코드 설명
이 스크립트의 동작 방식은 다음과 같습니다.
1. 모듈 임포트: cgi 모듈은 폼 데이터를 파싱하는 핵심 기능을 제공하고, cgitb 모듈은 오류 발생 시 상세한 디버그 정보를 브라우저에 표시해 줍니다.
2. FieldStorage 생성: cgi.FieldStorage()> 객체는 POST 또는 GET 방식으로 전송된 폼 데이터를 담고 있으며, 이를 통해 각 필드의 값에 접근할 수 있습니다.
3. 값 확인: form.getvalue('dropdown')을 호출하여 드롭다운 상자에서 선택된 값을 가져옵니다. 값이 존재하지 않으면 기본 문자열인 "Not entered"가 할당되어 오류 없이 안전하게 처리됩니다.
4. 결과 출력: HTTP 헤더(Content-type:text/html)를 먼저 출력한 후, 선택된 과목명을 포함한 HTML 페이지를 동적으로 생성하여 사용자에게 보여줍니다.
이처럼 Python의 CGI 모듈을 활용하면 드롭다운 상자뿐만 아니라 텍스트 입력, 체크박스, 라디오 버튼 등 다양한 폼 요소의 데이터를 손쉽게 처리할 수 있습니다.