如何使用Django中的模板过滤器计算列表中的出现次数并将其传递给模板

时间:2019-04-25 16:24:35

标签: python django django-views django-template-filters

我有一个django应用,其中我在计算点击的网址。我将单击的URL保存在视图中的列表中。现在,我想遍历该列表并计算(URL)的每次出现次数。然后,我想在模板中显示每个URL及其计数的数字。到目前为止,我正在做的事情是这样的:

我的观点:

class AnalyticsIndexView(StaffRequiredMixin, ListView):
  template_name = 'analytics_list.html'
  model = UrlTime

  def get_context_data(self, **kwargs):
    context = super(AnalyticsIndexView, self).get_context_data(**kwargs)
    context['url_views_list'] = UrlTime.objects.all()
    context['total_views'] = UrlTime.objects.all().count

    context['home_view'] = UrlTime.objects.filter(associated_url='/').count()
    context['job_list'] = UrlTime.objects.filter(associated_url='/jobs/').count()
    context['job_detail'] = UrlTime.objects.filter(associated_url='/jobs/{How to pass id??}').count()
    context['job_'] = UrlTime.objects.filter(associated_url='/jobs/{???id?????}').count()

    return context

现在可行。但是我不想明显地对链接进行硬编码,也因为我不知道其中将包含哪些URL。 (处理我的自定义中间件)。我想捕获列表中的每个URL,对其进行计数,并在模板中显示link和linkcount。我已经尝试过Collections了,但是它并没有按照我的要求工作。此外,对于编码,我不知道如何使用具有动态ID的链接来实现。...

有人有什么建议吗?非常感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要进行GroupBy and Count聚合。尝试使用以下查询覆盖if/else方法:

get_query_set