django TemplateView使用分页并只获得1个结果

时间:2017-12-13 12:34:29

标签: django python-2.7

我想仅通过 filter_alert 进行分页。 而且我也只得到 filter_alert 的最后结果。我将在代码下面解释更多。 这是我在views.py中的代码

class TestView(FormView, TemplateView):
    template_name = 'home/main.html'
    context_object_name = 'pages'
    paginate_by = 10
    form_class = DomainsForm

    def get_context_data(self, **kwargs):
        context = super(TestView, self).get_context_data(**kwargs)

        list_tables = Domains.objects.all()
        context['lists'] = list_tables

        tbls_id = list_tables.exclude(status=0).values_list('id', flat=True)
        context['alerts_list'] = Alerts.objects.all()

        data = []

        for row_id in tbls_id:
            cron_info = get_cron_info(row_id)

            data.append(cron_info)
            context['data'] = simplejson.dumps(data)

            tbl = Domains.objects.get(id=row_id)

            t_pages = create_pg("Pages_" + tbl.tablename)

            query_pages = t_pages.objects.all()
            context['pages'] = query_pages

            get_alerts = create_alerts('Links_' + tbl.tablename + '_Alerts')

            filter_alert = get_alerts.objects.all()
            context['all_alerts'] = filter_alert

        return context

因此,在表中,我有3个id' s,其中1个状态= 0。我想获得另外2个id并通过for循环传递它们。但是当我在模板中提取结果时...我只得到最后一个id。 我正在使用 row_id 来获取所有ID ...我做了一次打印测试...它给了我2个ID ...但是当我想要的时候要查看 filter_alerts 的所有结果,它只会显示模板中的最后一个ID。

我也希望实现分页...我通常使用此代码...但它不能在 TemplateView 中工作。

        all_alerts = get_alerts.objects.all()

        page = request.GET.get('page', 1)

        paginator = Paginator(all_alerts, 10)
        try:
            details = paginator.page(page)
        except PageNotAnInteger:
            details = paginator.page(1)
        except EmptyPage:
            details = paginator.page(paginator.num_pages)

        context['all_alerts'] = details

我知道它不起作用,因为函数 get_context_data 没有请求。我需要创建一个单独的功能吗?也许重新创建 get_queryset 函数。 我不知道...... 请帮忙。谢谢

更新 我使用了一个空列表并附加到它...在模板中没有给我任何结果

代码:

        filter_data = []
        for row_id in tbls_id:
            ...
            filter_alert = get_alerts.objects.all()
            filter_data.append(filter_alert)
        print filter_data  # it prints both objects
        context['all_alerts'] = filter_data

        return context
template.html all_alerts 中的

无法正常工作

1 个答案:

答案 0 :(得分:0)

关于分页部分......找到了答案。 它需要 self.request ,而不仅仅是 请求

但是我仍然需要另一个问题的答案