수업소개
여기서는 Python 웹애플리케이션에서 어떻게 수정 기능을 구현하는가를 살펴봅니다.
강의
소스코드
update.py
#!/usr/local/bin/python3 print("Content-Type: text/html") print() 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, 'r').read() else: pageId = 'Welcome' description = 'Hello, web' 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_update.py" method="post"> <input type="hidden" name="pageId" value="{form_default_title}"> <p><input type="text" name="title" placeholder="title" value="{form_default_title}"></p> <p><textarea rows="4" name="description" placeholder="description">{form_default_description}</textarea></p> <p><input type="submit"></p> </form> </body> </html> '''.format(title=pageId, desc=description, listStr=listStr, form_default_title=pageId, form_default_description=description))
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()
index.py
#!/usr/local/bin/python3 print("Content-Type: text/html") print() 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, 'r').read() update_link = '<a href="update.py?id={}">update</a>'.format(pageId) else: pageId = 'Welcome' description = 'Hello, web' update_link = '' 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> {update_link} <h2>{title}</h2> <p>{desc}</p> </body> </html> '''.format(title=pageId, desc=description, listStr=listStr, update_link=update_link))