Вы должны использовать встроенную сессионную инфраструктуру django, она уже многое сделает для вас. Я реализовал это следующим образом с приложением вопросов и ответов, где я хотел отслеживать просмотры:
в models.py:
class QuestionView(models.Model):
question = models.ForeignKey(Question, related_name='questionviews')
ip = models.CharField(max_length=40)
session = models.CharField(max_length=40)
created = models.DateTimeField(default=datetime.datetime.now())
в views.py:
def record_view(request, question_id):
question = get_object_or_404(Question, pk=question_id)
if not QuestionView.objects.filter(
question=question,
session=request.session.session_key):
view = QuestionView(question=question,
ip=request.META['REMOTE_ADDR'],
created=datetime.datetime.now(),
session=request.session.session_key)
view.save()
return HttpResponse(u"%s" % QuestionView.objects.filter(question=question).count())
Vikingosegundo, вероятно, прав, хотя использование типа контента, вероятно, является более подходящим решением, но определенно не изобретать колесо с точки зрения отслеживания сеансов, Django уже делает это!
Последнее, вы, вероятно, должны иметь представление о том, что записи попадания будут вызываться либо через Ajax, либо через css-ссылку, чтобы поисковые системы не увеличивали количество ваших запросов.
Надеюсь, это поможет!