views.py 604 Bytes
from django.shortcuts import render

class HitCountViewMixin(object):
    def get_object(self, *args, **kwargs):
        try:
            super(HitCountViewMixin, self).get_object(*args, **kwargs)
        except AttributeError:
            raise NotImplementedError

    def dispatch(self, request, *args, **kwargs):
        response = super(HitCountViewMixin, self).dispatch(request,
                                                           *args, **kwargs)
        if 200 <= response.status_code < 300:
            obj = self.get_object()
            if obj: obj.hit(request)
        return response