반응형
[생활코딩] 활용 - 생성 구현 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은 웹서버가 웹브라우저에게 어디로 이동할지 명령
반응형
'Dev > Python' 카테고리의 다른 글
[Python] 삭제하기(form, remove) (0) | 2020.08.23 |
---|---|
[Python] 업데이트하기(input, format, rename) (0) | 2020.08.23 |
[Python] 파일목록 읽기 - listdir, 반복문 - for (0) | 2020.08.23 |
[Python] 파일 읽기 open().read() (0) | 2020.08.22 |
[Python] cgi.FieldStorage() (0) | 2020.08.22 |