✔️ Django 웹 개발
이번에는 목록 페이지와 상세 페이지를 연결해보겠다.
여기 목록 페이지에서 게시글의 제목을 누르면, 상세 페이지로 이동하도록 해보겠다.
먼저, post_list.html 로 가서...
각각의 제목을 누르면 상세 페이지로 이동할 수 있도록 a 태그를 넣어보겠다.
우리는 게시글의 제목을 클릭하면 상세 페이지로 이동하길 바라기 때문에 각각의 포스트 데이터에 대한 id 값을 넣어준다.
이런 식으로 posts 뒤에 post.id 값을 넣어주면 그 각각에 해당하는 제목을 누르면 그 게시글에 대한 상세 페이지로 이동할 것 이다.
그럼, 웹 페이지로 가서 새로 고침을 하고 제목을 눌러보면 이동이 잘 되는 것을 확인 할 수 있다.
아무 제목이나 클릭을 해주면...
이동이 잘 되는 것을 확인할 수 있다.
그럼 이제 편하게 이동할 수 있도록 상세 페이지에서 다시 글 전체 목록 페이지로 가는 링크도 만들어주겠다.
이제 post_detail.html 로 가서 맨 아랫부분에 다음과 같이 코드를 작성해준다.
웹 페이지로 돌아가서 새로 고침을 해주면 링크가 생긴다...
돌아가기 링크를 클릭해주면...
다시 글 목록 페이지로 이동한다.
이번엔 URL 의 name 속성에 대해 알아보겠다.
name 속성은 각각의 URL 자리에 이름을 붙여주는 방법이다.
먼저 post_list.html 을 살펴보면...
이렇게 각각의 글로 이동하는 a 태그의 URL 들이 앞 부분에 /posts/ 이렇게 되어있다.
이렇게 데이터가 직접 코드에 들어가 있는 형태를 하드코딩이라고 부른다.
만약 urls.py 에 있는 경로를 posts 가 아니라 blogs 로 변경한다면, 다시 post_list 로 가서...
blogs 라고 변경해주어야 한다.
지금은 한 개의 URL 로 구성이 되어있지만, URL 이 늘어나고 구조가 복잡해지면 위에처럼 하드코딩된 URL 은 유지 보수에 심각한 문제를 일으키게 된다.
그 이유는 하나라도 변경하는 것을 잊으면 에러가 날 것이다.
그래서 우리는 하드코딩 대신 명령하면 디테일 URL 들을 모두 blogs 로 변경하게 해보고 싶다.
그렇게 바꾸고 싶으면 각각의 URL 자리들을 대표할 이름이 필요한데 이것이 바로 URL 의 name 속성이다.
그럼 posts 앱의 urls.py 로 가서 URL 의 이름을 정의해보겠다.
위에처럼 코드를 똑같이 추가해준다.
이런 식으로 이름을 붙여줬으니까 한 번 써보겠다.
이렇게 네이밍 된 URL 은 템플릿 태그 URL 을 사용해서 쓸 수 있다.
한 번 따라해보자!
먼저 post_detail.html 로 가서...
바꾸기 전
'/posts/' 부분을 탬플릿 태그를 써서 다음과 같이 바꿔준다.
바꾸고 난 후
이번엔 post_list.html 로 가서 해당 부분을 바꿔준다.
바꾸기 전
바꾸고 난 후
그러면 다 완료했으면 다시 서버를 실행해서 새로 고침을 해주면...
아까랑 똑같이 동작하는 것을 확인할 수 있다.
끝으로 :