-HTML form태그를 이용하여 파이썬 애플리케이션이 데이터를 받아서 처리하는 방법을 알아본다. CRUD중 Delete를 구현한다.
-생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다.
-파이썬은 3.9.2 ver를 사용한다.
(이전 파이썬 포스팅 예제와 연결되니 참고 부탁드립니다)
CRUD의 마지막인 Delete를 만들어본다. Delete는 os.remove 함수로 간단하게 만들 수 있다.
Delete 버튼 만들기
우선 delete버튼을 만드는데 delete버튼을 a태그를 통한 링크 방식으로 만들면, 누군가 링크를 공유한 경우 그 사람들도 delete를 할 수 있는 보안 문제가 발생하기 때문에 form 방식으로 다음과 같이 만든다.
index.py 일부
if 'id' in form:
pageId = form["id"].value
description = open('data/'+pageId,'r').read() #open함수로 내용 불러오기
update_link = '<a href="update.py?id={}">update</a>'.format(pageId)
delete_action= '''
<form action="process_delete.py" method="post">
<input type="hidden" name="pageId" value="{}">
<input type="submit" value="delete">
</form>
'''.format(pageId) #delete버튼을 form방식으로 만든다
else :
pageId = 'welcome'
description = 'Welcome!'
update_link = ''
delete_action = ''
update_link와 마찬가지로 delete_action도 if분기로 만들어 목록클릭시에만 활성화되도록 한다. delete버튼을 클릭하면 pageId만 넘기면 되기 때문에 hidden태그에 pageId를 format기능으로 담은 후 delete버튼 클릭 시 post방식으로 process_delete.py로 넘겨준다.
delete버튼은 print('''...''')에 format을 이용하여 다음과 같이 넣어준다.
index.py 일부
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}
{delete_action} #delete버튼 넣기
<h2>{title}</h2>
<p>{desc}
</p>
</body>
</html>
'''.format(title=pageId, desc=description, listStr=listStr,update_link=update_link, delete_action=delete_action))
다음과 같이 delete버튼이 생성된 화면이 만들어진다.
Delete 처리하기
proccess_delete.py
#!Python
import cgi,os
form = cgi.FieldStorage()
pageId= form['pageId'].value
os.remove('data/'+pageId)
#Redirection
print("Location: index.py")
print()
os.remove(파일경로/파일명)을 이용하면 삭제가 가능하다. redirection은 그냥 index.py로 한다. 이후 목록을 클릭 후 delete버튼을 누르면 삭제된 후 index.py로 돌아오는 것을 확인할 수 있다.
'개발자 일지 > Phython' 카테고리의 다른 글
[인프런]파이썬 알고리즘 기초 문법 정리2 (0) | 2021.04.18 |
---|---|
[인프런]파이썬 알고리즘 기초 문법 정리1 (0) | 2021.04.11 |
[파이썬 기초] XSS(Cross-Site Scripting) 개념 및 방어 방법 (0) | 2021.04.04 |
[파이썬 기초]함수,모듈 작성법 및 활용 (0) | 2021.03.28 |
[파이썬 기초]form 데이터 전송 및 처리방법(CRUD-Update) (0) | 2021.03.24 |
[파이썬 기초]form 데이터 전송 및 처리방법(CRUD-Create,Read) (0) | 2021.03.21 |
[파이썬 기초]반복문(for,range,while) 및 반복문 활용 (0) | 2021.03.19 |
[파이썬 기초]데이터타입 - list, 기타 컨테이너 타입(튜플,딕셔너리) (0) | 2021.03.16 |