Django サイト (引用データベース) のテンプレートを作成しています。Digg のようなページネーションが必要です。ただし、アプリケーションの作成者は独自のページネーションを作成しましたが、残念ながらページ番号は付けられていません (「前の」リンクと「次の」リンクのみ)。ということでdjango-paginationをインストールしたのですが、サイトで使えません。私は Django をまったく初めて使用し、プログラミングもまったく初めてです。私は単純な Web デザイナーです。
元のスクリプトがあります: https://bitbucket.org/fleg/fqdb/
1 つ目は、テンプレート コンテキスト プロセッサの問題です。私のsettings.pyにはこのセクションがなかったので、django-paginationのドキュメントとまったく同じように追加しました。サイトを実行すると、「管理アプリケーションを使用するには、TEMPLATE_CONTEXT_PROCESSORS 設定に 'django.contrib.auth.context_processors.auth' を入力してください」というエラーが表示されます。それで、どうやってそれを注文しなければなりませんか?
2 つ目の問題はテンプレートです。スクリーンキャストとまったく同じように使用します:
{% extends "fqdb/base.html" %}
{% load pagination_tags %}
{% block title %}{{ title }}{% endblock %}
{% block content %}
<h1>{{ title }}</h1>
{% if quotes %}
{% autopaginate quotes %}
{% for quote in quotes %}
{% include 'fqdb/quote_body.html' %}
{% endfor %}
{% paginate %}
{% else %}
<p>Brak cytatów.</p>
{% endif %}
{% endblock %}
しかし、「テンプレート エラー: レンダリング中に KeyError がキャッチされました: リクエスト」というメッセージが表示されます。しかし... 真剣に、このコードの何が問題なのかわかりません!
ページ分割されたビュー - 引用リストがあります。ページネーションなしで動作するので、問題ないと思いますが、多分。
def list_paged(request, page, order_by_what, title, reverse_name):
hash = get_ip_hash(request)
lista = Quote.objects.filter(accepted = True).order_by(order_by_what)[:]
returnDict = {'quotes': lista, 'title': title, 'hash': hash, 'sidebar': get_sidebar()}
return render_to_response('fqdb/quote_list.html', {'quotes': get_quotes(quotes)}, context_instance=RequestContext(request))
django-pagination タスクであるため、ページ付けしないように変更しました。Bitbucket で元のビューを見つけることができます。
より良いページネーション ソリューションをご存知でしょうか。