[Flask 웹 프레임워크] ORM을 사용하여 게시판 글 수정하고 저장하기

글을 수정하고 저장하기 위해서는 ORM을 이용해 DB에서 글을 조회하여 수정 폼(Form)이 포함된 HTML 페이지에 표시해주고 저장할 경우 다시 ORM을 이용해 DB에 저장한 뒤 다시 글의 내용을 보여줘야 한다.

먼저 글 보기 페이지에 “수정하기 버튼을 추가한다.

글보기 페이지에 수정하기 버튼 추가 (26행)
글보기 페이지에 수정하기 버튼 추가 (26행)

목록보기로 돌아가는 버튼은 덤이다. (25행)

글 보기화면이 다음과 같이 수정되었다.

글보기에 추가 된 “수정하기”와 “목록으로” 버튼

부트스트랩4의 버튼 스타일 중 “btn btn_light” CSS를 적용했다.

다음은 DB에서 조회한 글을 post_modify.html 이라는 웹페이지에 표시해주고 내용을 수정한 뒤 저장 버튼이 눌릴 경우 다시 POST 메소드로 전달받아 저장하는 기능을 수행하는 코드를 main_page.py에 추가해 준다.

Python,flask,ORM,글수정하기
main_page.py에 추가된 post_modify라우팅 함수

32행에서 블루프린트에 post_modify/글번호 형태의 라우팅 함수를 지정하고 POST 메소드를 추가해준다.  post_modify() 함수의 34행에서 GET 방식으로 호출될 경우 수정할 글을 보여주고 37행에서 POST로 호출될 경우 수정된 id에 해당되는 글을 찾아 request.form[‘~’]으로 전달 받은 값으로 수정하고 commit() 해준다. 그리고 다시 글을 보여주는 페이지로 리다이렉트 한다. (42행)

이제 렌더링할 템플릿 HTML 파일인 post_modify.html 을 다음과 같이 작성한다.

post_modify.html

표시된 글을 수정하고 “수정하기” 버튼을 클릭할 경우 9행의 action에 지정한 글의 번호를 수정하도록 한다.

완성되면 다음과 같이 수정하기 페이지가 표시된다.

글 수정하기 페이지

지금은 “내용” 부분을  <textarea>~</textarea>로 만들었기 때문에 줄바꿈이나 이미지 첨부가 되지 않는다. 그래서 에디터 적용을 먼저할지 자기가 작성한 글을 아무나 수정하지 못하도록 로그인 기능과 글 수정 시 남의 글을 수정하지 못하게 하는 기능을 먼저 적용할지 생각 좀 해봐야겠다.

#python  #flask  #ORM

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top