【问题标题】:Dynamic pagination using Generic ListView使用通用 ListView 进行动态分页
【发布时间】:2017-07-19 16:36:42
【问题描述】:

我有一个要求,用户应该能够选择他希望在助手列表中看到的每页的项目数。我在 Django 1.4 中使用通用 ListView。

我在此更改之前的代码如下所示:

Class AssistantList(ListView):
    template_name = "register/assistant_list.html"
    context_object_name = 'assistant_list'
    paginate_by = 25

如何根据用户的选择动态设置 paginate_by,而不是像上面那样硬编码?

【问题讨论】:

    标签: django


    【解决方案1】:

    我最近不得不这样做。您可以覆盖 get_paginate_by 函数来获取查询字符串参数。这是一个基本示例。

    Class AssistantList(ListView):
        template_name = "register/assistant_list.html"
        context_object_name = 'assistant_list'
        paginate_by = 25
    
        def get_paginate_by(self, queryset):
            """
            Paginate by specified value in querystring, or use default class property value.
            """
            return self.request.GET.get('paginate_by', self.paginate_by)
    

    然后在我们的 html 中,我们有一个下拉选项,用户可以在其中选择要查看的项目数。

    <form action="." method="get">
        <select name="paginate_by">
            <option>25</option>
            <option>50</option>
            <option>75</option>
            <option>100</option>
        </select>
    </form>
    

    我们添加了一些 javascript 以使其自动提交,您需要将 paginate_by 传递给上下文,以便确保它继续在页面之间传递。

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2016-11-16
      相关资源
      最近更新 更多