django 조회수 구현, hitcount 이용

2019-04-20

조회수 구현을 직접 하려니 잘 되지도 않을 뿐더러 괜히 다른 것도 할게 많은데 시간만 잡아 먹을 것 같아서 있는 기능을 이용하기로 했다. https://github.com/thornomad/django-hitcount

문서 원문에는 방법이 각각 3가지가 있는것 같지만 여기서는 필자가 이용한 방법 한가지만 소개한다. 우선 설치를 pip로 해준다.

pip install django-hitcount

settings.py INSTALLED_APPS에 아래와 같이 추가해준다.

# settings.py
INSTALLED_APPS = (
    ...
    'hitcount'
)

이번 프로젝트에서는 DetailView를 사용하고 있기 때문에 HitCountDetailView를 이용하기로 한다. 아래와 같이 HitCountDetailView import 해주고 기존에 사용하고 있었던 DetailViewcount_hit = True를 추가해준다. generic.DetailView를 상속받고 있었다면 지우고 HitCountDetailView를 상속받게 괄호안에 넣어줘야한다.

from hitcount.views import HitCountDetailView

class PostCountHitDetailView(HitCountDetailView):
    model = Post        # your model goes here
    count_hit = True    # set to True if you want it to try and count the hit

DetailView를 사용한 경우 hitcount라는 변수를 사용할 수 있게 된다. 템플릿에 출력할때는 아래와 같이 상황에 맞게 사용하면 된다.

{# the primary key for the hitcount object #}
{{ hitcount.pk }}

{# the total hits for the object #}
{{ hitcount.total_hits }}

DetailView에서는 사용이 가능한데 게시물을 리스트로 출력하는 Template에선 사용이 안돼서 조금 아쉽긴 하다.