Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python CGI 프로그래밍: 라디오 버튼 데이터 전달 및 처리 방법

라디오 버튼(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>

위 코드를 실행하면 아래와 같은 폼이 화면에 표시됩니다.

Python CGI 프로그래밍: 라디오 버튼 데이터 전달 및 처리 방법

라디오 버튼 데이터를 처리하는 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 동작 원리 학습 목적으로는 위 예제가 여전히 유용한 참고 자료가 됩니다.