如何使用ndb光标翻到上一页?

2024-01-24

我无法设法进入 ndb 分页中的“上一页”。

我已经检查过文档 https://developers.google.com/appengine/docs/python/ndb/queries#cursors还有这个类似的在这里提问 https://stackoverflow.com/questions/10240454/backward-pagination-with-cursor-is-working-but-missing-an-item?rq=1没有成功。

 def show_feedback(kind, bookmark=None):
    """Renders returned feedback."""
    cursor = None    
    more_p= None
    if bookmark:
        cursor = Cursor(urlsafe=bookmark)

    q = Feedback.query()
    q_forward = q.filter(Feedback.kind==Feedback.KINDS[kind]).order(-Feedback.pub_date)
    q_reverse = q.filter(Feedback.kind==Feedback.KINDS[kind]).order(Feedback.pub_date)

    feedbacks, next_cursor, more = q_forward.fetch_page(app.config['FEEDBACK_PER_PAGE'], start_cursor=cursor)
    if cursor:
        rev_cursor = cursor.reversed()
        feedbacks2, prev_cursor, more_p = q_reverse.fetch_page(app.config['FEEDBACK_PER_PAGE'], start_cursor=rev_cursor)

    next_bookmark = None
    prev_bookmark = None
    if more and next_cursor:
        next_bookmark = next_cursor.urlsafe()
    if more_p and prev_cursor:
        prev_bookmark = prev_cursor.urlsafe()
    return render_template_f11('show_feedback.html', kind=kind, feedbacks=feedbacks, next_bookmark=next_bookmark, prev_bookmark=prev_bookmark)

html:

  {% if prev_bookmark %}
        <a href="{{ url_for(request.endpoint, bookmark=prev_bookmark) }}">Previous</a>
  {% endif %}
  {% if next_bookmark %}
    <a href="{{ url_for(request.endpoint, bookmark=next_bookmark) }}">Next</a>
  {% endif %}

我可以正确地向前翻页直到最后。 但我无法向后翻页直到最后一页,即使这样我也无法向后翻页直到第一页。

请问我缺少什么?

UPDATE:

根据费萨尔的建议更改了代码。我必须承认它效果更好。但分页仍然无法正常工作:

我有 7 个条目。配置中的 PAGE_SIZE 为 3。因此我们得到三页:

单击“下一步”时,我得到 7,6,5 -> 4,3,2 -> 1 Perfect。 现在,当单击上一个时:1 -> 3,4,5 (?) -> 5,6,7 (?)

感谢您的帮助

def show_feedback(kind, bookmark=None):
    """Renders returned feedback."""
    is_prev = request.args.get('prev', False)
    cursor = None        
    if bookmark:
        cursor = Cursor(urlsafe=bookmark)

    q = Feedback.query()
    q_forward = q.filter(Feedback.kind==Feedback.KINDS[kind]).order(-Feedback.pub_date)
    q_reverse = q.filter(Feedback.kind==Feedback.KINDS[kind]).order(Feedback.pub_date)

    qry = q_reverse if is_prev else q_forward

    feedbacks, cursor, more = qry.fetch_page(app.config['FEEDBACK_PER_PAGE'], start_cursor=cursor)

    if is_prev:
        prev_bookmark = cursor.reversed().urlsafe() if more else None
        next_bookmark = bookmark
    else:
        prev_bookmark = bookmark
        next_bookmark = cursor.urlsafe() if more else None
    return render_template_f11('show_feedback.html', kind=kind, feedbacks=feedbacks, next_bookmark=next_bookmark, prev_bookmark=prev_bookmark)

更新2:

现在看来它几乎可以与reverse()一起使用。

7,6,5 -> 下一个 -> 4,3,2 -> 下一个 -> 1

1 -> 上一个 -> 2,3,4 -> 5,6,7 (顺序不再是最新日期在前)


因此,我在这里所做的是使用当前书签导航下一个或上一个,并删除其他查询,这样它就不会为每个请求查询两次。 (编辑旧的描述/答案是错误的,当我测试它时。这个在我的本地主机上工作)。

Try:

is_prev = self.request.get('prev', False)
if is_prev:
    qry = q_reverse
    cursor = cursor.reversed()
else:
    qry = q_forward

feedbacks, cursor, more = qry.fetch_page(app.config['FEEDBACK_PER_PAGE'], start_cursor=cursor)

if is_prev:
    prev_bookmark = cursor.reversed().urlsafe() if more else None
    next_bookmark = bookmark
else:
    prev_bookmark = bookmark
    next_bookmark = cursor.urlsafe() if more else None

html

{% if prev_bookmark %}
    <a href="{{ url_for(request.endpoint, bookmark=prev_bookmark, prev=True) }}">Previous</a>
{% endif %}
{% if next_bookmark %}
  <a href="{{ url_for(request.endpoint, bookmark=next_bookmark) }}">Next</a>
{% endif %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用ndb光标翻到上一页? 的相关文章

  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P

随机推荐

  • Flask - 异步渲染模板

    我正在制作一个 Flask 应用程序 我想知道是否可以渲染路线模板 但在功能完成后重定向用户 目前使用Python 2 7这是我的例子 app route loading matched def match time match retur
  • 在 Django 管理中设置内联条件

    我有一个模型 希望工作人员能够在活动日期之前对其进行编辑 像这样 class ThingAdmin admin ModelAdmin model Thing if obj date lt today Something like that
  • 从 Aave 提款会导致“错误交易已恢复”

    我正在运行一个示例 它将 Aave 代币存入 Aave 中 我正在使用提供的代码合同示例Aave v2 github https github com aave code examples protocol tree main V2 Cre
  • 用于简单消息传递应用程序的 Cassandra 数据模型

    我正在尝试学习 Cassandra 并且总是发现最好的方法是从创建一个非常简单且小型的应用程序开始 因此 我正在创建一个基本的消息应用程序 它将使用 Cassandra 作为后端 我想做以下事情 用户将使用用户名 电子邮件和密码创建一个帐户
  • 一个类什么时候应该是 Comparable 和/或 Comparator?

    我见过同时实现这两个功能的类可比 and 比较器 这是什么意思 我为什么要使用其中一种而不是另一种 以下文字来自比较器与可比较器 http www digizol com 2008 07 java sorting comparator vs
  • CIDR 地址不在 VPC 的 CIDR 地址范围内

    我已在适用于 AWS 的新 VPC 上尝试了 CIDR 块的所有 IP 范围组合 我当前的 CIDR 是172 31 0 0 16 171 31 0 0 32 CIDR Address is not within CIDR Address
  • SignalR 不使用服务器上的会话

    当我尝试访问HttpContext从 HUB 返回的当前会话null 我尝试使用该界面IRequiresSession但它不起作用 有人能帮我吗 SignalR 连接 包括客户端所有 Hub 操作的底层连接 不支持会话状态 如果您愿意 您可
  • Python SqlAlchemy 实用生成表类

    给定表名列表 我尝试以编程方式生成 SqlAlchemy 数据库表类 这是我所做的 def generate table class list engine base declarative base engine table names
  • SSDT 未解决参考错误 SQL71561

    我已将数据库导入到数据库项目中 但一开始我就收到了 200 多个有关未解析引用的错误 现在我已经阅读了一些像这样的帖子和网站 http blogs msdn com b bahill archive 2009 08 26 using sel
  • JPA 不急切地加载所有内容

    我在通过 OpenJPA 实现利用 JPA 1 0 时遇到问题 我的数据模型由一个 Trip 组成 该 Trip 与 Leg 具有一对多关系 与 Passenger 具有一对多关系 Leg 和 Passenger 在 PassengerLe
  • SQL 多重连接语句

    当我的 SQL 语句中只有一个内部联接时 它运行得很好 我尝试加入第二个表 现在收到一条错误消息 指出存在语法错误 缺少运算符 这里有什么问题吗 adsFormView SelectCommand SELECT FROM tableCour
  • 如何根据 Big Query 中的 UTC 时间戳在 Data Studio 中显示本地时区的日期/时间

    我希望 Google Data Studio 报告使用用户的本地时区显示销售数据 包括按小时销售的热图报告 我将数据存储在 BigQuery 中 时间戳字段存储为 UTC Per 听起来时间戳应该存储为 UTC 我正在这样做 我认为 Dat
  • 在 PySpark 中使用 Apache Spark 数据帧删除重音的最佳方法是什么?

    我需要从不同数据集中删除西班牙语和其他语言字符的重音 我已经根据这里提供的代码做了一个函数post https stackoverflow com questions 517923 what is the best way to remov
  • OOP Javascript - 隔离类内的对象

    我试图拥有一个可以创建多个实例的主对象 每个实例都继承子对象 具有唯一 隔离的属性 然而 当我这样做时 所有创建的对象的对象属性 更改后 都会发生变化 我可能没有正确解释这一点 但这个例子应该很清楚 Main function Extend
  • JQuery 抖动对错误的影响

    当用户输入不正确的信息时 我试图在我的登录页面上应用摇动效果 此时 如果用户提交了不正确的详细信息 页面将刷新 打印 PHP 通知 并通过 JS 使通知 div 可见 我正在尝试使用变得可见的通知来识别信息不正确并切换摇动效果 HTML d
  • 我想在 print 语句之后而不是之前向用户询问 c 的值。怎么做?

    该程序询问 a b 和 c 的值 然后打印 print 语句 我想在打印 print 语句之前询问 c 的值 set serveroutput on set verify off DECLARE a number a b number a
  • Magento:系统/配置在多选中添加自定义值

    我创建了一个简单的模块 我已经创建了system xml 有一个字段多选我想在多选字段中添加自定义值 是否可以在多选字段中添加自定义值
  • MVC DateTime 文本框格式问题

    我想做类似的事情 model PickupDate ToString d 但 MVC4 不太喜欢这样 PickupDate is a DateTime字段 我想在视图中显示时去掉时间部分 同时保留new id date1 绑定的代码Text
  • Rails ActiveJob - 处理 ActionMailer::DeliveryJob 中的异常的好方法是什么

    我在用ActiveJob Sidekiq在我的 Rails 项目中进行任务处理 我直接使用发送邮件MyMailer some deliver later 它会自动创建一个ActionMailer DeliveryJob任务并将其放入Side
  • 如何使用ndb光标翻到上一页?

    我无法设法进入 ndb 分页中的 上一页 我已经检查过文档 https developers google com appengine docs python ndb queries cursors还有这个类似的在这里提问 https st