본문 바로가기
WEB/Python

[Python] form 값 처리하기(FieldStorage, open, Location)

by Ellen571 2020. 8. 23.

[생활코딩] 활용 - 생성 구현 1 - form

[생활코딩] 활용 - 생성 구현 2 - 전송한 정보의 처리

 

 

from 만들기

 

create.py

#!/usr/local/bin/python3
print("content-type:text/html; charset=UTF-8\n")
import cgi,os

files = os.listdir('data')
liststr = ''
for item in files:
    liststr = liststr + '<li><a href="index.py?id={name}">{name}</a></li>'.format(name=item)


form = cgi.FieldStorage()
if 'id' in form:
    pageId = form["id"].value
    description = open('data/'+pageId).read()
else:
    pageId = 'Welcome'
    description = 'Hello Python'

print('''<!doctype html>
<html>
<head>
  <title>WEB1 - Welcome</title>
  <meta charset="utf-8">
</head>
<body>
  <h1><a href="index.py">WEB</a></h1>
  <ol>{listStr}</ol>
  <a href="create.py">create</a>
  <form action="process_create.py" method="post">
    <p><input type="text" name="title" placeholder="title"></p>
    <p><textarea name="description" placeholder="description"></textarea></p>
    <p><input type="submit"></p>
  </form>
</body>
</html>
'''.format(title=pageId, desc=description, listStr=liststr))

- post방식으로 해야 url에 전달값 노출되지 않음

 

 

form에서 전달된 값 확인

 

process_create.py

#!/usr/local/bin/python3
print("content-type:text/html; charset=UTF-8\n")

import cgi

form = cgi.FieldStorage()
print(form)

[결과]

FieldStorage(None, None, [MiniFieldStorage('title', 'adsfafd'), MiniFieldStorage('description', 'adsafasdf')])

- FieldStorage 메소드로 title과 description 값을 가져올 수 있음

 

 

form에서 전달된 값으로 파일 생성

 

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)

- open(파일명, 'w')은 쓰기모드로 해당 파일이 없을 경우 파일 생성함

- write()에 해당파일 안에 넣을 내용 입력

 

 

생성된 파일 주소로 이동

 

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)

# Redirection
print("Location: index.py?id="+title)
print()

- Location은 웹서버가 웹브라우저에게 어디로 이동할지 명령

반응형