ndbのページングで「前のページ」にアクセスできません。ndbカーソルで前のページに移動するにはどうすればいいですか?
私はdocumentationと同様にこのようなquestion hereを確認しています。
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つのエントリがあります。 config内のPAGE_SIZEは3です。したがって、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)
UPDATE 2(?):
(?)これはreverse()でほぼ動作しているようです。
7,6,5 - >次 - > 4,3,2 - >次 - > 1
1 - >前 - > [2,3,4] - > [5,6,7(順序は
あなたが発注の問題が考え出しましたか私はまた日付の順序をしているし、ドキュメントのパターンを混乱させる。 –