본문 바로가기
Dev/Python

[Python] 업데이트하기(input, format, rename)

by Ellen571 2020. 8. 23.
반응형

[생활코딩] 활용 - 수정 구현

 

 

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(기존, 변경) 사용하기

반응형