220113 TIL

CoderS·2022년 1월 13일
0

TIL DAY 156

오늘 배운 일

✔️ Django 웹 개발

1. 사이트 연결하기

이번에는 목록 페이지와 상세 페이지를 연결해보겠다.

여기 목록 페이지에서 게시글의 제목을 누르면, 상세 페이지로 이동하도록 해보겠다.

먼저, post_list.html 로 가서...

각각의 제목을 누르면 상세 페이지로 이동할 수 있도록 a 태그를 넣어보겠다.

post_list.html

우리는 게시글의 제목을 클릭하면 상세 페이지로 이동하길 바라기 때문에 각각의 포스트 데이터에 대한 id 값을 넣어준다.

이런 식으로 posts 뒤에 post.id 값을 넣어주면 그 각각에 해당하는 제목을 누르면 그 게시글에 대한 상세 페이지로 이동할 것 이다.

그럼, 웹 페이지로 가서 새로 고침을 하고 제목을 눌러보면 이동이 잘 되는 것을 확인 할 수 있다.

아무 제목이나 클릭을 해주면...

이동이 잘 되는 것을 확인할 수 있다.

그럼 이제 편하게 이동할 수 있도록 상세 페이지에서 다시 글 전체 목록 페이지로 가는 링크도 만들어주겠다.

이제 post_detail.html 로 가서 맨 아랫부분에 다음과 같이 코드를 작성해준다.

post_detail.html

웹 페이지로 돌아가서 새로 고침을 해주면 링크가 생긴다...

돌아가기 링크를 클릭해주면...

다시 글 목록 페이지로 이동한다.

이번엔 URL 의 name 속성에 대해 알아보겠다.

name 속성은 각각의 URL 자리에 이름을 붙여주는 방법이다.

먼저 post_list.html 을 살펴보면...

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 의 이름을 정의해보겠다.

urls.py

위에처럼 코드를 똑같이 추가해준다.

이런 식으로 이름을 붙여줬으니까 한 번 써보겠다.

이렇게 네이밍 된 URL 은 템플릿 태그 URL 을 사용해서 쓸 수 있다.

한 번 따라해보자!

먼저 post_detail.html 로 가서...

post_detail.html

바꾸기 전

'/posts/' 부분을 탬플릿 태그를 써서 다음과 같이 바꿔준다.

바꾸고 난 후

이번엔 post_list.html 로 가서 해당 부분을 바꿔준다.

post_list.html

바꾸기 전

바꾸고 난 후

그러면 다 완료했으면 다시 서버를 실행해서 새로 고침을 해주면...

아까랑 똑같이 동작하는 것을 확인할 수 있다.

끝으로 :

  • 오늘은 목록 페이지와 상페 페이지를 연결시키는 방법에 대해 알아보았다.
  • 하드코딩으로 연결시킬 수 있지만 URL 에 name 속성을 사용하면 큰 규모 프로젝트여도 편하게 작업할 수 있을 것 같다.
profile
하루를 의미있게 살자!

0개의 댓글