반응형
pageId값 유무에 따라 update 버튼 출력
index.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()
update_link = '<a href="update.py?id={pageid}">update</a>'.format(pageid=pageId)
else:
pageId = 'Welcome'
description = 'Hello Python'
update_link = ''
- pageId가 있을 경우 updete_link의 url id값으로 pageId값을 넣음
- pageId가 없을 경우 공백으로 둠
form에 선택된 파일의 값 출력하기
update.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>
<form action="process_update.py" method="post">
<input type="hidden" name="pageId" value="{default_title}">
<p><input type="text" name="title" placeholder="title" value="{default_title}"></p>
<p><textarea name="description" placeholder="description">{default_desc}</textarea></p>
<p><input type="submit" value="update"></p>
</form>
</body>
</html>
'''.format(title=pageId, desc=description, listStr=liststr, default_title=pageId, default_desc=description))
- input은 value로 값을 출력
- submit 클릭 시 <input type="hidden">으로 기존 pageId 값을 전송해 수정할 파일명을 찾을 수 있도록 함
업데이트된 내용 처리하기
process_update.py
#!/usr/local/bin/python3
import cgi, os
form = cgi.FieldStorage()
pageId = form["pageId"].value
title = form["title"].value
description = form["description"].value
opened_file = open('data/'+pageId, 'w')
opened_file.write(description)
opened_file.close()
os.rename('data/'+pageId, 'data/'+title)
# Redirection
print("Location: index.py?id="+title)
print()
- 기존 파일명인 pageId 가져오기
- 파일 open('','w')한 다음엔 close() 파일 닫기
- 기존 파일명을 변경된 파일명으로 바꾸기 위해 os모듈의 rename(기존, 변경) 사용하기
반응형
'Dev > Python' 카테고리의 다른 글
[Python] 삭제하기(form, remove) (0) | 2020.08.23 |
---|---|
[Python] form 값 처리하기(FieldStorage, open, Location) (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 |