try: page = request.GET.get('page', 1) except PageNotAnInteger: page = 1 p = Paginator(servers, per_page=per_page, request=request) p_servers = p.page(page) start = (int(page)-1) * per_page # 避免分页后每行数据序号从1开始 return render(request, 'servers/server_list.html', {'p_servers': p_servers, 'start': start, 'search': search})怎么让per_page让鱼护可选择输入
时间: 2024-03-02 11:48:44 浏览: 23
你可以在模板中添加一个表单,让用户输入per_page的值。然后在视图中获取这个值,并将其传递给Paginator。下面是一个可能的示例代码:
在模板中添加表单:
```
<form method="get">
<label for="per_page">每页显示数量:</label>
<input type="number" name="per_page" value="{{ per_page }}" min="1">
<button type="submit">更新</button>
</form>
```
在视图中获取per_page的值,并将其传递给Paginator:
```
def server_list(request):
servers = Server.objects.all()
search = request.GET.get('search')
per_page = request.GET.get('per_page', 10) # 默认每页显示10条数据
try:
page = request.GET.get('page', 1)
except PageNotAnInteger:
page = 1
p = Paginator(servers, per_page=per_page, request=request)
p_servers = p.page(page)
start = (int(page)-1) * per_page
return render(request, 'servers/server_list.html', {'p_servers': p_servers, 'start': start, 'search': search, 'per_page': per_page})
```
这个视图接受一个名为"per_page"的参数,如果没有提供,则默认为10。在模板中,我们使用一个表单来允许用户更新这个值。注意,我们还将per_page的值传递给模板,以便在表单中显示当前设置的值。