Счетчик посещений страниц в Django - PullRequest
5 голосов
/ 05 августа 2010

Я хочу иметь счетчик страниц, который отображает количество посетителей, которые просмотрели определенную страницу на моем сайте.Можно ли это сделать с помощью Django?

Ответы [ 3 ]

10 голосов
/ 05 августа 2010

Для этой проблемы есть приложение Django, которое называется django-hitcount . Его легко использовать и использовать в любом из ваших проектов.

9 голосов
/ 05 августа 2010

А "счетчик страниц" это что? Постоянный фрагмент данных, который обновляется функциями просмотра и отображается шаблоном.

Как вы, без сомнения, уже знаете, все вещи Джанго имеют следующие части.

  1. Модель
  2. Функция просмотра
  3. Template

Модель

Если вы хотите сохранить счетчик страниц в базе данных, вам нужна модель Django.

class PageCounter( Model ):

Вам нужно поставить ряд в эту модель. Обычно «приспособление» поможет сделать это, так как это одна строка, и вы делаете это только один раз при выполнении syncdb.

Функция просмотра

Затем вам нужно получить и обновить счетчик страниц в функции просмотра.

pageCounter= PageCounter.objects.all()[0] 
pageCounter.count += 1
pageCounter.save()

Template

Теперь вам нужно указать значение для ваших шаблонов, чтобы оно могло отображаться.

1 голос
/ 23 июня 2017

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

Если вы хотите избежать сторонней библиотеки и предотвратить обновление счетчика при каждом обновлении страницы, вы можете сделать следующий миксин (основываясь на ответе С.Лотта)

class BlogPostCounterMixin(object):
    def get_context_data(self, **kwargs):
        context = super(BlogPostCounterMixin, self).get_context_data(**kwargs)
        blog_post_slug = self.kwargs['slug']
        if not blog_post_slug in self.request.session:
            bp = BlogPost.objects.filter(slug=blog_post_slug).update(counter=+1)
            # Insert the slug into the session as the user has seen it
            self.request.session[blog_post_slug] = blog_post_slug
    return context

Проверяет, была ли полученная модель сохранена в сеансе. Если он был сохранен в сеансе, он пропускает инкремент, иначе он увеличивает счетчик и добавляет порцию модели в сеанс, предотвращая приращения при обновлении страницы.

Примечание: это миксин, который вам нужно добавить в ваше представление.

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