Django MTV 패턴으로 게시글 RUD 구현하기
RUD
Read : 상세 페이지 조회
Update : 글 수정 (수정 및 저장 처리 분리)
Delete : 글 삭제 (POST 방식만 허용)
편의성 개선
상세 페이지 링크 추가
목록 및 작성 페이지 간 이동 링크 추가
글 작성 후 목록 페이지로 리다이렉트
글 작성 후 URL 이동이 이루어지지 않으면 브라우저에서 POST 요청이 반복될 가능성이 있음
이를 방지하기 위해 redirect를 사용하여 'articles' 목록 페이지로 이동하도록 수정
실제로 render처리만 해서 띄운 create 페이지에서 command+r 을 연타한 결과
중복된 데이터가 여러개 생성된 것을 볼 수 있다.
*PRG(Post-Redirect-Get) 패턴
POST 요청 후 다른 URL로 리다이렉트하여 중복 요청을 방지하고 사용자 경험을 개선하는 방법
- POST 요청 반복 방지
- 브라우저 새로고침 시 동일 요청 재전송 방지
앱(articles)내 templates/ 상세페이지(article_detail.html) 생성
상세페이지
-제목
-내용
-작성시간
-수정시간
▷목록으로 돌아가기
▷수정(edit.html)
▷삭제(delete.html)
▷ 이번에 새로 만든 기능
views.article_detail의 urlpatterns path "<int:pk>"
- <int:pk> : URL에서 정수 값을 받아 뷰 함수나 클래스 기반 뷰로 전달
Anchor 태그 내부로 pk와 title을 넣어 상세 페이지로 이동할 수 있는 클릭 가능 영역 확장
article리스트들에서도 상세페이지로 넘어갈 수 있도록 설계하고 보니까 anchor태그안에 제목만 넣어놓음
제목 글자크기를 늘릴까 고민하다가 걍 시각적으로 hr로도 나눠놨는데.. 저 어딘가 아무데나 누르면 넘어가게 해보자! 해서 저렇게 넣었다.
아, 그리구 새 글을 작성하는 페이지로 넘어가는 앵커태그도 넣어줌
아무데나 눌러도 넘어가는 페이지.
여기두 취소버튼 만들어서 다시 목록으로 돌아가게 만듦
상세 페이지의 삭제, 수정기능
앱(articles)내의 views.py
delete정의
GET 요청으로는 삭제가 이루어지지 않도록 'request.method == "POST"'
Django DRM의 delete()메서드로 삭제 작업 수행
삭제 후 articles페이지로 리디렉션
GET요청이라면 redirect "article_detail", pk=pk
edit 정의
1. 글 수정 url
- 수정할 글을 보여주는 url (articles/<pk>/edit/)
- 글 수정을 처리할 url (articles/<pk>/update/)
2. 글 수정 로직 수행 view
- 수정할 글을 보여주는 view (edit view)
- 글 수정을 처리하는 view (update view)
3. 글 수정 수행 template (edit.html)
4. 글 수정 버튼 -> article_detail
edit.html
'∟Framework > ∟Django' 카테고리의 다른 글
Django - MTV패턴을 활용한 C(Create)와 R(Read) 구현 (0) | 2025.01.18 |
---|---|
Django - ORM(Object-Relational Mapping) (1) | 2025.01.14 |
Django - Model (1) | 2025.01.14 |
Django - URLs (0) | 2025.01.14 |
Django - HTTP Form (0) | 2025.01.12 |