Как подсчитать количество посетителей на сайте Django? - PullRequest
1 голос
/ 07 июня 2019

Как рассчитывать количество посетителей на моем сайте, чтобы оно увеличивалось при каждом посещении сайта пользователем.Я могу посчитать количество просмотров посетителями, используя следующие коды:

def blog_detail(request, blog_slug):
    blog = get_object_or_404(Blog, slug=blog_slug)
    session_key = 'blog_views_{}'.format(blog.slug)
    if not request.session.get(session_key):
        blog.blog_views += 1  # here
        blog.save()
        request.session[session_key] = True

    context = {
        'blog': blog,
        'categories': get_category_count()
    }

    return render(request, 'blogs/blog-detail.html', context)

при наличии поля blog_views в моих моделях.Я не знаю, есть ли подобный способ сделать это просто для подсчета количества посещений моего сайта.

Некоторые предлагали использовать hitcount, но я не мог использовать его нигде, кроме общих представлений.Если вы предлагаете это также, пожалуйста, уточните это с некоторыми кодами, спасибо.Огромное спасибо.

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Вместо добавления логики «подсчета» в каждом представлении вы можете написать класс промежуточного программного обеспечения для этого. Примерно так:

def hitcount_middleware(get_response):

    def middleware(request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        response = get_response(request)

        # Get the URL from the `request` parameter and save it 
        # in a Hitcount model.

        return response

    return middleware

Делая это,

  • вся ваша логика будет в одном и том же месте (т.е. легко поддерживать),
  • код в вашем views будет чище,
  • можно легко включить / отключить,
  • можно легко оптимизировать (например, используя кеш Django).

Надеюсь, это поможет.

0 голосов
/ 07 июня 2019

для вышеприведенного случая я предлагаю использовать google analytics вместо написания логики в приложении django. Google Analytics бесплатна для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...