Существует другой подход, который может вам подойти, используя ведение журнала веб-сервера и постобработку, которые регистрируют для создания статистики. Я использовал его в Apache с некоторыми проектами, для которых требовалось количество просмотров страниц. Аналогичная конфигурация для других веб-серверов будет работать так же.
Я использую django.contrib.contentypes , чтобы записать Идентификатор типа содержимого и Идентификатор объекта для объекта, к которому осуществляется доступ в этом примере, но вы, конечно, можете регистрировать все, что захотите.
Итак, в вашем файле Apache virtualhost conf добавьте директиву LogFormat, например:
LogFormat "%{X-H-CID}o|%{X-H-OID}o" hitcounter
И затем присоединение его к CustomLog:
CustomLog path/to/your/logfile.log hitcounter
Это позволит Apache записать в файл журнала следующие заголовки HTTP: X-H-CID и X-H-OID, которые представляют идентификаторы ContentType и Object ID объекта, к которому обращаются. Из представления вы можете добавить заголовки к HttpResponse:
ctxt = RequestContext(request)
rendered = render_to_string(template, ctxt)
http_res = HttpResponse(rendered)
http_res['X-H-CID'] = content_type_id
http_res['X-H-OID'] = object_id
Замените content_type_id и object_id вашими реквизитами реальных объектов.
В этом примере следует написать строку вроде:
16|4353
, где 16 - идентификатор типа контента, а 4353 - идентификатор объекта. Наконец, вы можете запланировать пользовательскую команду django для обработки этого файла журнала и выполнения необходимых действий.