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

파이썬 CGI 스크립트로 체크박스 데이터를 전달하고 처리하는 방법

CGI 프로그램으로 체크박스 데이터 전달하기

체크박스(Checkbox)는 사용자가 두 개 이상의 옵션을 동시에 선택할 수 있어야 하는 경우에 사용하는 폼 요소입니다. 라디오 버튼과 달리 여러 항목을 중복 선택할 수 있다는 점이 특징입니다.

체크박스가 선택되면 해당 항목의 namevalue가 서버로 전송되지만, 선택되지 않으면 아무런 데이터도 전송되지 않습니다. 이 특성을 이해하면 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>

이 코드를 브라우저에서 실행하면 다음과 같은 폼이 화면에 나타납니다.

Maths   Physics   [Select Subject]

체크박스 입력을 처리하는 CGI 스크립트

아래는 웹 브라우저에서 체크박스 버튼을 통해 전송된 입력값을 처리하는 checkbox.cgi 스크립트입니다.

#!/usr/bin/python
# CGI 처리를 위한 모듈 임포트
import cgi, cgitb

# FieldStorage 인스턴스 생성
form = cgi.FieldStorage()

# 각 필드에서 데이터 가져오기
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>"

스크립트 동작 원리

이 스크립트의 핵심 동작 과정은 다음과 같습니다.

1. FieldStorage 객체 생성: cgi.FieldStorage()를 호출하면 POST 또는 GET 방식으로 전송된 폼 데이터를 파싱하여 저장한 객체가 만들어집니다.

2. getvalue()로 값 확인: form.getvalue('maths')는 'maths' 체크박스가 선택되었으면 해당 값("on")을 반환하고, 선택되지 않았으면 None을 반환합니다. 따라서 조건문만으로 체크 여부를 판별할 수 있습니다.

3. 결과 출력: 각 체크박스의 상태를 "ON" 또는 "OFF" 문자열로 변환한 뒤, HTML 형식으로 출력하여 사용자에게 결과를 보여줍니다.

참고 사항

위 예제의 print 문은 파이썬 2 문법입니다. 파이썬 3에서는 print() 함수 형태로 작성해야 하며, 헤더 출력 시에는 반드시 빈 줄(\r\n\r\n)을 포함해야 브라우저가 본문을 정상적으로 해석합니다.

또한 cgi 모듈은 파이썬 3.11부터 지원 중단(deprecated)되었고 파이썬 3.13에서 완전히 제거되었습니다. 실제 프로젝트에서는 Flask, Django 같은 최신 웹 프레임워크를 사용하는 것이 권장되지만, CGI의 기본 동작 원리를 학습하는 데에는 위 예제가 여전히 유용한 참고 자료가 됩니다.