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

Python CGI 스크립트로 텍스트 영역(TEXTAREA) 데이터 전달하는 완벽 가이드

CGI 프로그램으로 텍스트 영역 데이터 전달하기

웹 폼에서 여러 줄에 걸친 긴 텍스트를 CGI 프로그램으로 전송해야 할 때는 TEXTAREA 요소를 사용합니다. 일반적인 입력 필드(input)와 달리, TEXTAREA는 사용자가 자유롭게 여러 줄의 텍스트를 작성할 수 있는 공간을 제공합니다.

TEXTAREA를 포함한 HTML 폼 예제

다음은 TEXTAREA 박스가 포함된 폼의 기본적인 HTML 코드입니다.

<form action = "/cgi-bin/textarea.py" method = "post" target = "_blank">
<textarea name = "textcontent" cols = "40" rows = "4">
Type your text here...
</textarea>
<input type = "submit" value = "Submit" />
</form>

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

Type your text here...
 Submit

여기서 cols 속성은 텍스트 영역의 가로 너비(문자 수)를, rows 속성은 세로 높이(줄 수)를 지정합니다. name 속성으로 지정한 값이 서버 측에서 해당 데이터를 참조하는 키가 됩니다.

텍스트 영역 데이터를 처리하는 CGI 스크립트

이제 웹 브라우저에서 전송된 데이터를 처리하는 textarea.cgi 파이썬 스크립트를 살펴보겠습니다.

#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb

# Create instance of FieldStorage
form = cgi.FieldStorage()

# Get data from fields
if form.getvalue('textcontent'):
    text_content = form.getvalue('textcontent')
else:
    text_content = "Not entered"

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Text Area - Fifth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Entered Text Content is %s</h2>" % text_content
print "</body>"

코드 동작 원리 설명

1. 모듈 임포트: cgi 모듈은 폼 데이터를 처리하는 핵심 기능을 제공하며, cgitb 모듈은 오류 발생 시 상세한 디버깅 정보를 브라우저에 표시해 줍니다.

2. FieldStorage 인스턴스 생성: cgi.FieldStorage()를 호출하면 POST 또는 GET 방식으로 전송된 모든 폼 데이터가 저장됩니다.

3. 데이터 추출: form.getvalue('textcontent') 메서드를 사용하여 TEXTAREA 요소의 값을 가져옵니다. 이때 HTML에서 설정한 name="textcontent"와 일치하는 이름을 사용해야 합니다.

4. 빈 값 처리: 사용자가 아무것도 입력하지 않은 경우를 대비해 조건문으로 기본값("Not entered")을 설정하여 안정성을 높였습니다.

5. 결과 출력: HTTP 헤더(Content-type:text/html)를 먼저 출력한 후, HTML 문서 형태로 사용자가 입력한 텍스트를 화면에 표시합니다.

참고 사항

위 예제 코드는 Python 2 기준으로 작성되었습니다. Python 3 환경에서는 print를 함수 형태인 print()로 사용해야 하며, 최신 웹 개발에서는 CGI보다 Flask나 Django 같은 웹 프레임워크를 사용하는 것이 권장됩니다. 그러나 CGI는 웹과 파이썬의 기본적인 연동 원리를 이해하는 데 매우 유용한 학습 자료입니다.