Я не совсем уверен, что вы имеете в виду Cprofile, но вы можете отслеживать, какие гости смотрели событие в модели:
Пример models.py:
from django.db import models
from django.contrib.auth.models import User
class Event(models.Model):
title = models.CharField(max_length=100)
datetime = models.DateTimeField()
class EventInvite(models.Model):
event = models.ForeignKey(Event)
guest = models.ForeignKey(User)
accepted = models.BooleanField(default=False)
viewed = models.BooleanField(default=False)
Этот использует django.contrib.auth.models.User
для представления гостей. Затем в вашем view.py обновите объект EventInvite
, когда гость просмотрит событие, если он его не принимает.
from django.shortcuts import render_to_response
from django.contrib.auth.decorators import login_required
from eventsApp import Event, EventInvite
@login_required
def viewEvent(request, event_pk):
event = Event.objects.get(pk=event_pk)
eventInvite = EventInvite.objects.get(event=event,guest=request.user)
eventInvite.viewed = True
eventInvite.save()
return render_to_response("eventView.html", { 'event' : event })
Edit - сосчитать вид отдельного события
Это может быть достигнуто более просто, добавьте поле счетчика в Event
модели:
from django.db import models
from django.contrib.auth.models import User
class Event(models.Model):
title = models.CharField(max_length=100)
datetime = models.DateTimeField()
num_views = models.IntegerField()
Тогда в представлении событий , увеличивайте счетчик каждый раз при загрузке вида для данного объекта:
def viewEvent(request, event_pk):
event = Event.objects.get(pk=event_pk)
event.num_views += 1
event.save()
return render_to_response("eventView.html", { 'event' : event })
Это будет считаться необработанным количеством раз, когда приложение django запрашивается для просмотра данного объекта Event
. Для выполнения этого поведения можно создать собственный класс промежуточного программного обеспечения: https://docs.djangoproject.com/en/dev/topics/http/middleware/#writing-your-own-middleware, это было бы удобно, если вы хотите использовать поведение для нескольких методов представления, например.
Если вы хотите провести подсчет на уровне шаблона, примерно так: https://github.com/thornomad/django-hitcount, может быть, более полезно.
Это больше похоже на то, что вы искали?
Я с удовольствием адаптирую/объясняю это больше, если это необходимо.
Привет, Генри, спасибо за ответ, это даст мне только пользователей, которые просмотрели события. Что делать, если один и тот же пользователь просматривает событие десять раз? поэтому я хочу, чтобы количество раз вызывалось определенное событие. Я могу просто сделать так, предположим, что я вызываю viewEvent каждый раз, когда пользователь хочет увидеть событие, тогда я хочу подсчитать количество раз, когда вызывается функция viewEvent. – RaviKiran
@ user2936254 Я изменил функцию просмотра, чтобы сделать это. –