gpt4 book ai didi

python - 如何使用 web.py python 中的列表结果实现分页

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:58 25 4
gpt4 key购买 nike

我正在使用 python web.py要设计一个小型网络应用程序,实际上我没有使用任何数据库来获取结果/记录,我将有一个记录列表(我将根据要求从某个地方获取:))

下面是我的代码

代码.py

import web
from web import form

urls = (
'/', 'index',
'/urls', 'urls_result',
)

app = web.application(urls, globals())
render = web.template.render('templates/')

class index:
def GET(self):
return render.home()

def POST(self):
result_list = [('Images', 'http://www.google.co.in/imghp?hl=en&tab=wi'),
('Maps', 'http://maps.google.co.in/maps?hl=en&tab=wl'),
('Play', 'https://play.google.com/?hl=en&tab=w8'),
('YouTube', 'http://www.youtube.com/?gl=IN&tab=w1'),
('News', 'http://news.google.co.in/nwshp?hl=en&tab=wn'),
('Gmail', 'https://mail.google.com/mail/?tab=wm'),
('Drive', 'https://drive.google.com/?tab=wo'),
('More»', 'http://www.google.co.in/intl/en/options/'),
('Web History', 'http://www.google.co.in/history/optout?hl=en'),
('Settings', 'http://www.google.co.in/preferences?hl=en'),
('Sign in', 'https://accounts.google.com/ServiceLogin?hl=en&continue=http://www.google.co.in/'),
('Advanced search', 'http://www.google.co.in/advanced_search?hl=en-IN&authuser=0'),
..............
..............
.............. so on until 200 records ]
return render.recordslist(result_list)

if __name__ == "__main__":
app.run()

home.html

$def with()
<html>
<head>
<title>Home Page</title>
<body alink="green" link="blue" >
<div class="main">
<center>
<form method="POST" action='urls'>
<input class="button" type="submit" name="submit" value="Submit" />
</form>
</center>
</div>
</body>
</html>

recordslist.html

$def with(result_list)
<html>
<head>
<title>List of records</title>
</head>
<body>
<table>
$for link in result_list:
<tr>
<td>$link[0]</td>
<td>$link[1]</td>
</tr>
</table>
</body>

所以从上面的代码来看,我正在做的是,当我运行服务器并使用从web.py返回的IP点击浏览器时,它被重定向到主页(url / 和模板为 home.html ),该页面由带有单个按钮的表单组成。

现在我没有使用任何database为了获取记录,我有硬核记录,其形式为 list of tuples正如你在上面看到的。

因此,当用户单击提交按钮时,我以 table 的形式显示记录。通过定向到 /url呈现模板 recordslist.html

现在上述过程运行良好。但这里的list of tuples/records可能高达200 or more ,所以我想实现pagination对于 /url页。

我用谷歌搜索了很多,发现所有命中都是从数据库检索记录,但不是从列表中检索记录,我真的很困惑如何使用10 pages for page对结果进行分页。 .

现在有人可以告诉我如何对上面代码的列表中的结果/记录进行分页吗?

最佳答案

获取页面

首先,您必须从用户的请求中提取页面。假设您将使用页面查询字符串参数,您可以使用它来确定页码:

params = web.input()
page = params.page if hasattr(params, 'page') else 1

使用页面

一旦有了页面,分页所涉及的就是返回结果的一部分。以下函数应该为您提供所需的切片(假设页面为 1 索引):

def get_slices(page, page_size=10):
return (page_size * (page - 1), (page_size * page)

这将返回可用于对结果列表进行切片的下限和上限。因此,当前返回 render.recordslist(result_list) 时,您可以使用:

lower, upper = get_slices(page)
return render.recordslist(result_list[lower:upper])

关于python - 如何使用 web.py python 中的列表结果实现分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15002290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com