使用会话统计页面浏览量django detailview

使用会话统计页面浏览量django detailview,django,python-3.x,detailview,pageviews,Django,Python 3.x,Detailview,Pageviews,我正试图数一数看风景的次数。我希望每次有人调用视图时计数器都增加1。然后,我希望模型上的“访问”字段自动更新为最新计数。然而,我不知道如何实施这一点。使用我找到的一些代码,我正在尝试: models.py class Statute(models.Model): address = models.ForeignKey(Address, null = True) statute_name = models.CharFi

我正试图数一数看风景的次数。我希望每次有人调用视图时计数器都增加1。然后,我希望模型上的“访问”字段自动更新为最新计数。然而,我不知道如何实施这一点。使用我找到的一些代码,我正在尝试:

models.py

class Statute(models.Model):
    address = models.ForeignKey(Address,
                                null = True)
    statute_name = models.CharField(max_length=25,
                                    default='')
    category = models.CharField(max_length=55,
                                default='')
    section_number = models.CharField(max_length=55,
                                    default='')
    section_title = models.CharField(max_length=255,
                                        default='')
    timestamp = models.DateTimeField(editable=False)
    visits = models.IntegerField(default=0)
    content = models.TextField(default='')

    slug = models.SlugField()
views.py

def get_context_data(self, **kwargs):
        context = super(LibraryInStateView, self).get_context_data(**kwargs)
        state = State.objects.get(slug=self.kwargs.get('state'))
        statute = Statute.objects.all()
        context['latest_statutes'] = statute.filter(
                address__zipcode__city__county__state=state).order_by(
                '-timestamp')
        context['statute_count'] = Statute.objects.filter(
                address__zipcode__city__county__state=state).count()    
        context['view_count'] = self.request.session['visits']+1
        return context
在您的视图更新中:

statute = Statute.objects.filter(address__zipcode__city__county__state=state)
statute.visits += 1
statute.save()
context['statute_count'] = statute
您可以将其包含在LibraryInstallView中的.get_对象方法中

或获取方法:

def get(self, request, *args, **kwargs):
    statute = # ... code to retrieve Statute for this view
    statute.visits += 1
    statute.save()

    self.view_count = statute.visits
    return super().get(request, *args, **kwargs)
然后,将view_count附加到类实例后,可以将其添加到上下文:

    def get_context_data(self, **kwargs):
        ...
        context['view_count'] = self.view_count
        return context

这不是增加了法定人数吗?我试图增加对DetailView生成的页面的访问次数。此外,此示例将引发一个错误-这里的规约变量包含一个queryset,而不是一个对象。不能将属性附加到它。
    def get_context_data(self, **kwargs):
        ...
        context['view_count'] = self.view_count
        return context