У меня проблемы с настройкой django-нумерации страниц - PullRequest
1 голос
/ 11 октября 2011

Я делаю шаблон для сайта Django (это база данных котировок). Я хочу сделать Digg-подобную нумерацию страниц. Несмотря на это, автор приложения сделал свою собственную нумерацию страниц, к сожалению, без нумерации страниц (только ссылки «предыдущая» и «следующая»). Итак, я установил django-pagination, но не могу использовать его с сайтом. Я полностью новичок в Django, даже программирование - я просто веб-дизайнер ... Хорошо, начнем.

Есть оригинальный скрипт: https://bitbucket.org/fleg/fqdb/

Первое - это проблема с обработчиками контекста шаблона. В моем файле settings.py не было этого раздела, поэтому я добавил его точно так же, как в документации по django-pagination. Когда я запускаю сайт, я получаю ошибку: «Поместите« django.contrib.auth.context_processors.auth »в настройку TEMPLATE_CONTEXT_PROCESSORS, чтобы использовать приложение администратора». Так как мне это заказать?

Вторая проблема - это шаблон. Я использую это точно как на скринкаст :

{% 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.

Может быть, вы знаете несколько лучших решений для нумерации страниц?

Ответы [ 3 ]

5 голосов
/ 11 октября 2011

Похоже, вам нужно добавить 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 , добавил обработчик запросов и прокомментировал те, которые вам не нужны.

Порядок обработчиков контекста шаблона обычно не имеет значения, если только они не определяют перекрывающиеся имена переменных.

0 голосов
/ 28 мая 2013

Если объекты передаются из тега шаблона

def comment_app(context):
    objects = Comments.objects.get_tree_for_object(context['content_object'])
    return {
        'comments_tree': objects,
        'request': context['request']
}
register.inclusion_tag('comments/comment_app.html', takes_context=True)(comment_app)

обратите внимание: 'request': context ['request']

0 голосов
/ 31 декабря 2012
{% autopaginate quotes N%}

N - сколько предметов вам нужно для каждой страницы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...