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

목록보기로 돌아가는 버튼은 덤이다. (25행)
글 보기화면이 다음과 같이 수정되었다.

부트스트랩4의 버튼 스타일 중 “btn btn_light” CSS를 적용했다.
다음은 DB에서 조회한 글을 post_modify.html 이라는 웹페이지에 표시해주고 내용을 수정한 뒤 저장 버튼이 눌릴 경우 다시 POST 메소드로 전달받아 저장하는 기능을 수행하는 코드를 main_page.py에 추가해 준다.

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

표시된 글을 수정하고 “수정하기” 버튼을 클릭할 경우 9행의 action에 지정한 글의 번호를 수정하도록 한다.
완성되면 다음과 같이 수정하기 페이지가 표시된다.

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