52. django get_absolute_url 사용하기

52.1 model.py에 추가하기

get_absolute_url 는 reverse함수를 통해
모델의 개별 데이터 url을 문자열로 반환합니다.

urls.py에 정의한 namespace(app_name)=blog, , name=blog_detail 입니다.

blog_detail(blog//)은 인수가 있는 url이기때문에
kwargs(또는 args)로 pk값을 넘겨주었습니다.

1
2
    def get_absolute_url(self):        
        return reverse('blog:blog_detail', kwargs={'pk':self.id} )

※수많은 페이지에 url이 하드코딩 되어 있고,
url을 변경해야 된다면 하나씩 url을 찾고 수정해야하는
번거로움이 발생합니다.

이러한 의존성을 제거하기 위해 urls.py의 path()함수에서
name을 정하고 사용합니다.

52.2 model.py에 추가하기

기존 {% url %} template 태그방식으은 주석 처리 하고, get_absolute_url 로 대체하였습니다.

1
  <a class="nav-link" href="{{ list.get_absolute_url }}">

잘 적용되는지 확인보세요.