1

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 で元のビューを見つけることができます。

より良いページネーション ソリューションをご存知でしょうか。

4

3 に答える 3

5

django.contrib.auth.context_processors.auth設定にプロセッサを追加してdjango.core.context_processors.requestコンテキスト化する必要があるようですTEMPLATE_CONTEXT_PROCESSORS

を定義する前はTEMPLATE_CONTEXT_PROCESSORS、django はデフォルトを使用していました。authコードの一部にプロセッサが必要なように見えるため、最初のエラー メッセージが表示されます。

プロセッサが必要なようにKeyError見えます。request

設定ファイルで次のことを試してください。

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    #"django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    #"django.core.context_processors.static",
    #"django.contrib.messages.context_processors.messages")
    "django.core.context_processors.request"
    )

Django 1.3リクエスト コンテキスト ドキュメントに記載されているデフォルト リストを使用し、リクエスト プロセッサを追加し、不要と思われるものをコメントアウトしました。

テンプレート コンテキスト プロセッサの順序は、それらが重複する変数名を定義しない限り、通常は重要ではありません。

于 2011-10-10T21:54:04.593 に答える
-1
{% autopaginate quotes N%}

N- 各ページに必要なアイテムの数

于 2012-12-31T14:34:42.727 に答える