Installation and Usage

For a working implementation, you can view the example project on Github.

Install django-hitcount:

pip install django-hitcount

Add django-hitcount to your INSTALLED_APPS:


View the additional settings section for a list of the django-hitcount settings that are available.

In your file add the following:

urlpatterns = [
    url(r'hitcount/', include('hitcount.urls', namespace='hitcount')),

There is nothing you are required to do with your own models as that django-hitcount relies on a GenericForeignKey to create the relationship to your model’s HitCount. You can add a GenericRelation to your model if you would like to be able to access its HitCount model easily:

from django.db import models
from django.contrib.contenttypes.fields import GenericRelation

from hitcount.models import HitCount

# here is an example model with a GenericRelation
class MyModel(models.Model):
    # Note that you need to specify the object_id_field as written below
    hit_count = GenericRelation(HitCount, object_id_field='object_pk')

Template Magic

Django-hitcount comes packaged with a jQuery implementation that works out-of-the-box to record the Hits to an object (be it a blog post, poll, etc). To use the jQuery implementation you can either include the app’s script file (as the documentation below shows) or to copy-paste the script into your own jQuery code. Of course: you could also implement this without relying on jQuery.

Start by loading hitcount tags on the desired templates:

{% load hitcount_tags %}

Recording a Hit

If you want to use the jQuery implementation in your project, you can add the Javascript file to your template like so:

{% load staticfiles %}
<script src="//"></script>
<script src="{% static 'hitcount/hitcount-jquery.js' %}"></script>

Then, on your object detail page (blog, page, poll, etc) you inject the needed javascript variables:

# use default insertion method for hitcount-jquery.js:
{% insert_hit_count_js_variables for object %}

# or you can use a template variable to inject as you see fit
{% get_hit_count_js_variables for object as hitcount %}
({ hitcount.ajax_url }}
{{ }}

Displaying Hit Information

You can retrieve the number of hits for an object many different ways:

# Return total hits for an object:
{% get_hit_count for [object] %}

# Get total hits for an object as a specified variable:
{% get_hit_count for [object] as [var] %}

# Get total hits for an object over a certain time period:
{% get_hit_count for [object] within ["days=1,minutes=30"] %}

# Get total hits for an object over a certain time period as a variable:
{% get_hit_count for [object] within ["days=1,minutes=30"] as [var] %}