在 django-tables2 中动态设置 per_page

Iva*_*nin 6 django-tables2

网站通常允许用户指定分页表中每页显示的项目数。我想用 django-tables2 来做到这一点。

我可以添加一个“每页显示 [ 5 | 10 | 50 ]”选择框来收集用户的 per_page 参数。

但是,表模板中的“上一页”和“下一页”按钮是超链接,具有 per_page 的硬编码值,例如:

<a href="?per_page=5&page=5">Next</a>
Run Code Online (Sandbox Code Playgroud)

我认为实现这种动态的唯一方法是使用 javascript,例如:

<span onclick="get_table_page(5)">Next</span>
Run Code Online (Sandbox Code Playgroud)

其中函数 get_table_page() 可以从选择框中检索 per_page 参数。

这是最好的方法吗?或者有没有不用javascript的方法?

更新:没有回答问题(如何更改上一页/下一页的 per_page),但是,正如接受的答案指出的那样,用户可以使用更改后的 per_page 参数重新加载当前页面,例如:

<p>Show [ <a href="{% querystring "per_page"=5  %}">5</a>
        | <a href="{% querystring "per_page"=20 %}">20</a>
        | <a href="{% querystring "per_page"=50 %}">50</a>
        ] Items</p>
Run Code Online (Sandbox Code Playgroud)

谨致谢意和良好祝愿

伊万

Jie*_*ter 5

django-tables2 支持 的per_page关键字参数table.paginate()。如果RequestConfig使用基于类的视图之一,只需添加per_page=20到 url 将使 django-tables2 重新渲染,每页 20 行。

您可以使用标签在自定义模板中创建网址{% querystring per_page=20 %},这应该保持排序/过滤完整。