이전 글에서 구현한 폼을 통해 사용자가 입력하고 전송한 데이터를
수신할 수 있도록 하고 해당 데이터로 파일을 만들어 글 제목 목록을 연동시켜주자.
1) 사용자가 전송한 데이터를 받을 process_create.py 파일을 만들고 실행 권한을 부여
(터미널 - process_create.py가 있는 디렉토리에서 실행)
sudo chmod a+x process_create.py
2) title 과 description 데이터를 전송받기
import cgi form = cgi.FieldStorage() title = form["title"].value description = form["description"].value
3) 전송받은 title 변수의 값을 이름으로 하는 파일을
data 디렉토리 안에 생성하고 description 변수의 값을 파일의 내용으로 저장하기
opened_file = open('data/'+title, 'w') opened_file.write(description) opened_file.close()
open('data/'+title, 'w')
파일을 'w'rite 모드로 열어서
data 디렉토리 밑에 title 값을 이름으로 하는 파일을 만든다.
opended_file.write(description)
description 값이
title 값을 이름으로 하는 파일에 쓰기가 됨
opened_file.close()
opened_file 이란 파일을 닫음
4) 사용자가 데이터를 전송한 후 이동할 페이지 설정
print("Location: index.py?id="+title) print()
Location: url 주소
url 주소로 이동하라는 의미
print("Location: index.py?id="+title)
웹 서버가 웹 브라우저의 요청에
쿼리스트링으로 title 값을 갖는 index.py url 주소로 이동하라고 응답
참고)
print("Content-Type: text/html") 는
웹 서버가 웹 브라우저의 요청에 보내줄 컨텐츠는 text 중에서 html이다
라고 응답하는 것
5) process_create.py 의 최종 코드는 아래와 같다.
#!/usr/local/bin/python3
import cgi
form = cgi.FieldStorage()
title = form["title"].value
description = form["description"].value
opened_file = open('data/'+title, 'w')
opened_file.write(description)
opened_file.close()
print("Location: index.py?id="+title)
print()
이제 create 페이지 폼에 title 값과 description 값을 입력하고
submit(제출)을 클릭하면
data 디렉토리에 title 값의 파일이 생성되고
쿼리스트링이 title 값인 페이지로 이동한다.
➡ 이와 같이 웹 서버가 사용자를 원래있던 페이지가 아닌
다른 페이지로 보내는 header 를 Redirection 이라고 한다.
[출처] 생활코딩 WEB2 - Python
https://opentutorials.org/module/3357