用户可以创建事件。对于该事件,他可以邀请一些客人并将他们添加到该客人中。
现在我想知道该特定事件的总视图数。我编写了一个 django-view 来获取事件详细信息,我可以在该视图上实现 cProfile 并计算视图数吗?还有所有事件的视图总数。如何实现这个?
如果我可以实现 cProfile 请告诉我该怎么做!
用户可以创建事件。对于该事件,他可以邀请一些客人并将他们添加到该客人中。
现在我想知道该特定事件的总视图数。我编写了一个 django-view 来获取事件详细信息,我可以在该视图上实现 cProfile 并计算视图数吗?还有所有事件的视图总数。如何实现这个?
如果我可以实现 cProfile 请告诉我该怎么做!
我不太清楚您所说的 cProfile 是什么意思,但您可以跟踪哪些客人查看了模型中的事件:
一个示例模型.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
代表客人。然后在您的views.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 })
编辑 - 计算单个事件的观看次数
这可以更简单地实现,在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 })
Event
这将计算 django 应用程序被请求查看给定对象的原始次数。如果需要,可以创建自定义中间件类来执行此行为:https ://docs.djangoproject.com/en/dev/topics/http/middleware/#writing-your-own-middleware ,如果例如,您希望在多个视图方法中使用该行为。
如果您希望在模板级别执行计数,如下所示:https ://github.com/thornomad/django-hitcount ,可能更有用。
这更像是你要找的吗?
如果需要,我很乐意对其进行更多调整/解释。