3-16 추가기능 개발 중 조회수 기능 추가관련
django-hitcount 를 사용하려고 보니 detail 에서만 사용이 가능하고 pybo 사이트처럼 list를 뿌릴때는 사용을 할 수 없는 거 같아서요
다른 질문글들을 찾아보니
question_views.py에서 아래와 같이 자체적으로 만든 get_client_ip를 호출해서 사용하는 것 같은데 해당 부분은 어떻게 구성되어 있을까요?
"from tools.utils import get_client_ip"
추가 기능들을 붙이는데 시간이 너무 오래걸리네요 ㅠㅠ
장고가좋아요 님 1372
M 2021년 9월 15일 6:24 오후
1개의 답변이 있습니다. 1 / 1 Page
파이보는 조회수의 무차별 증가를 막기위해 아이피당 1개만 조회수를 허용하도록 모델링했습니다.
그때 사용하는 것이 get_client_ip 이구요.
코드는 다음과 같습니다.
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[-1].strip()
else:
ip = request.META.get('REMOTE_ADDR')
return ip
그리고 조회수를 올릴지 판별하는 모델은 다음과 같습니다.
class QuestionCount(models.Model):
ip = models.CharField(max_length=30)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
def __unicode__(self):
return self.ip
그리고 view에서는 다음과 같이 체크하여 조회수를 올립니다.
# 조회수
ip = get_client_ip(request)
cnt = QuestionCount.objects.filter(ip=ip, question=question).count()
if cnt == 0:
qc = QuestionCount(ip=ip, question=question)
qc.save()
if question.view_count:
question.view_count += 1
else:
question.view_count = 1
question.save()
박응용 님
2021년 9월 15일 6:11 오후