Serve() вызывается дважды каждый раз, когда я перезагружаю страницу блога в wagtail
Я использую wagtail для создания сайта-блога. Для подсчета посещений каждого блога я переопределяю get_context() и serve() для установки cookie. Коды следующие:
def get_context(self, request):
authorname=self.author.get_fullname_or_username()
data = count_visits(request, self)
context = super().get_context(request)
context['client_ip'] = data['client_ip']
context['location'] = data['location']
context['total_hits'] = data['total_hits']
context['total_visitors'] =data['total_vistors']
context['cookie'] = data['cookie']
context['author']=authorname
return context
def serve(self, request):
context = self.get_context(request)
template = self.get_template(request)
response = render(request, template, context)
response.set_cookie(context['cookie'], 'true', max_age=3000)
return response
А функция count_visits выглядит следующим образом:
def count_visits(request, obj):
data={}
ct = ContentType.objects.get_for_model(obj)
key = "%s_%s_read" % (ct.model, obj.pk)
count_nums, created = VisitNumber.objects.get_or_create(id=1)
if not request.COOKIES.get(key):
blog_visit_count, created =BlogVisitNumber.objects.get_or_create(content_type=ct, object_id=obj.pk)
count_nums.count += 1
count_nums.save()
blog_visit_count.count += 1
blog_visit_count.save()
Проблема, с которой я столкнулся, заключается в том, что когда я перезагружаю страницу блога, serve() был загружен дважды. В первый раз запрос был с информацией о cookie. Но во второй раз куки запроса были {}, из-за чего подсчет посещений работает некорректно. Я не понимаю, почему serve() вызывается дважды каждый раз, когда я перезагружаю страницу.