据说使用skip()在具有许多记录的MongoDB集合中进行分页很慢,不推荐使用.
可以使用远程分页(基于> _id比较)
db.items.find({_id: {$gt: ObjectId('4f4a3ba2751e88780b000000')}});
Run Code Online (Sandbox Code Playgroud)
它很适合显示上一页.&下一个按钮 - 但是当你想要显示实际页码1 ... 5 6 7 ... 124时,它实现起来并不容易 - 你需要预先计算每页开始的"_id".
所以我有两个问题:
1)我应该什么时候开始担心?什么"记录太多"而跳过()的速度明显减慢?1 000?1 000 000?
2)使用远程分页时,显示与实际页码的链接的最佳方法是什么?
我在Django中使用分页时遇到问题.以下面的URL为例:
http://127.0.0.1:8000/users/?sort=first_name
Run Code Online (Sandbox Code Playgroud)
在此页面上,我按其first_name对用户列表进行排序.没有排序GET变量,它默认按id排序.
现在,如果我点击下一个链接,我希望以下网址:
http://127.0.0.1:8000/users/?sort=first_name&page=2
Run Code Online (Sandbox Code Playgroud)
相反,我失去了所有得到的变量,最终得到了
http://127.0.0.1:8000/users/?page=2
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为第二页按id而不是first_name排序.
如果我使用request.get_full_path,我最终会得到一个丑陋的URL:
http://127.0.0.1:8000/users/?sort=first_name&page=2&page=3&page=4
Run Code Online (Sandbox Code Playgroud)
解决办法是什么?有没有办法访问模板上的GET变量并替换页面的值?
我正在使用Django文档中描述的分页,我的偏好是继续使用它.我使用的模板代码与此类似:
{% if contacts.has_next %}
<a href="?page={{ contacts.next_page_number }}">next</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud) 如何在屏幕大小的块中拆分HTML文件的内容,以便在WebKit浏览器中"分页"它?
每个"页面"应显示完整的文本量.这意味着不得在屏幕的顶部或底部边框中将一行文本切成两半.
编辑
这个问题最初标记为"Android",因为我打算构建一个Android ePub阅读器.但是,似乎解决方案只能使用JavaScript和CSS实现,因此我扩大了问题的范围,使其与平台无关.
在Spring MVC中是否有可用于分页的开箱即用,易于实现的标准分页组件/ tag-lib或代码示例?
出于分页目的,我需要使用LIMIT和OFFSET子句运行查询.但是我还需要计算没有LIMIT和OFFSET子句的查询返回的行数.
我想跑:
SELECT * FROM table WHERE /* whatever */ ORDER BY col1 LIMIT ? OFFSET ?
Run Code Online (Sandbox Code Playgroud)
和:
SELECT COUNT(*) FROM table WHERE /* whatever */
Run Code Online (Sandbox Code Playgroud)
同时.有没有办法做到这一点,特别是让Postgres优化它的方式,这样它比单独运行更快?
我是Flask的新手.我无法理解如何request.args使用.我在某处读到它用于返回查询字符串的值[如果我错了就纠正我].以及需要多少参数request.args.get().我知道当我必须存储提交的表单数据时,我可以使用
fname = request.form.get("firstname")
Run Code Online (Sandbox Code Playgroud)
这里只传递一个参数.
考虑这段代码.在此代码中也进行了分页.
@app.route("/")
def home():
cnx = db_connect()
cur = cnx.cursor()
output = []
page = request.args.get('page', 1)
try:
page = int(page)
skip = (page-1)*4
except:
abort(404)
stmt_select = "select * from posts limit %s, 4;"
values=[skip]
cur.execute(stmt_select,values)
x=cur.fetchall()
for row in reversed(x):
data = {
"uid":row[0],
"pid":row[1],
"subject":row[2],
"post_content":row[3],
"date":datetime.fromtimestamp(row[4]),
}
output.append(data)
next = page + 1
previous = page-1
if previous<1:
previous=1
return render_template("home.html", persons=output, next=next, previous=previous)
Run Code Online (Sandbox Code Playgroud)
这里request.args.get()有两个参数.请解释为什么它需要两个参数以及它的用途.
我正在实现datatbales并根据我的要求,除分页问题外,大多数事情已得到解决.在我的情况下,每次分页导航显示.如果只有一个页面,我想禁用分页导航.怎么做?我的代码是这样的:
JS
<script>
function fnFilterColumn(i) {
$('#example').dataTable().fnFilter(
$("#col" + (i + 1) + "_filter").val(),
i
);
}
$(document).ready(function() {
$('#example').dataTable({
"bProcessing": true,
"sAjaxSource": "datatable-interestdb.php",
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"aButtons": [
{
"sExtends": "csv",
"sButtonText": "Save to CSV"
}
]
},
"oLanguage": {
"sSearch": "Search all columns:"
}
});
$("#example").dataTable().columnFilter({
aoColumns: [
null,
null,
null,
null
]
});
$("#col1_filter").keyup(function() {
fnFilterColumn(0);
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
HTML
<table cellpadding="3" cellspacing="0" border="0" class="display userTable" aria-describedby="example_info">
<tbody>
<tr id="filter_col1">
<td>Interest:</td>
<td> …Run Code Online (Sandbox Code Playgroud) 我正在尝试进行分页,但是有一个错误:
[语法错误]第0行,第57行:错误:字符串的预期结束,得到'限制'
我不太确定这是否是正确的语法(和逻辑)来进行查询:
public function getFriendsFromTo ($user, $limit, $offset)
{
return $this->getEntityManager()
->createQuery('SELECT f FROM EMMyFriendsBundle:Friend f WHERE f.user='.$user.' limit '.$limit. 'offset' .$offset)
->getResult();
}
Run Code Online (Sandbox Code Playgroud)
朋友和用户是相关的很多ToOne和oneToMany,所以在friends表中有一个字段 - user_id.
这是在我的控制器中:
$user = $this->get('security.context')->getToken()->getUser();
$id = $user->getId();
$friends = $user->getFriends();
$result = count($friends)
$FR_PER_PAGE = 7;
$pages = $result/$FR_PER_PAGE;
$em = $this->getDoctrine()->getEntityManager();
$friends = $em->getRepository('EMMyFriendsBundle:Friend')
->getFriendsFromTo($id, $FR_PER_PAGE, $page*$FR_PER_PAGE);
Run Code Online (Sandbox Code Playgroud)
我知道它是愚蠢甚至错误的(特别是第三个参数$page*$FR_PER_PAGE),但我只想尝试查询是否有效,但事实并非如此.
你如何在SQL Server 2008中进行分页?
Laravel 4.2可以选择指定自定义视图,app/config/view.php例如:
/*
|--------------------------------------------------------------------------
| Pagination View
|--------------------------------------------------------------------------
|
| This view will be used to render the pagination link output, and can
| be easily customized here to show any view you like. A clean view
| compatible with Twitter's Bootstrap is given to you by default.
|
*/
'pagination' => 'pagination_slider-alt'
Run Code Online (Sandbox Code Playgroud)
这至少在Laravel 5中已经消失了view.php.
有没有办法在Laravel 5中复制这种行为?
pagination ×10
sql ×2
count ×1
css ×1
datatables ×1
django ×1
doctrine-orm ×1
flask ×1
html ×1
java ×1
javascript ×1
laravel-5 ×1
limit ×1
mongodb ×1
performance ×1
php ×1
postgresql ×1
python ×1
python-2.7 ×1
servlets ×1
spring ×1
spring-mvc ×1
symfony ×1
webkit ×1