我在设置django-pagination方面遇到了问题

1 python django pagination django-pagination

我正在为Django网站(它的报价数据库)制作模板.我想要像Digg一样的分页.Altough,该应用程序的作者已经做了自己的分页,遗憾的是没有页面数字(只是"上一个"和"下一个"链接).所以我已经安装了django-pagination,但我不能在网站上使用它.我是Django的新手,甚至编程 - 我只是一个简单的webdesigner ......好的,我们走吧.

有原始脚本:https://bitbucket.org/fleg/fqdb/

第一件事是模板上下文处理器的问题.我的settings.py没有这个部分,所以我添加它就像在django-pagination文档中一样.当我运行该站点时,我收到一个错误:"在您的TEMPLATE_CONTEXT_PROCESSORS设置中输入'django.contrib.auth.context_processors.auth'以使用管理应用程序".那我该如何订购呢?

第二个问题是模板.我用它究竟像上的截屏:

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

但我得到"模板错误:渲染时请求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))
Run Code Online (Sandbox Code Playgroud)

我已将其修改为不分页,因为它是django-pagination任务.您可以在Bitbucket上找到原始视图.

也许你知道一些更好的分页解决方案吗?

Ala*_*air 5

看起来您需要为您的设置添加django.contrib.auth.context_processors.authdjango.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"
    )
Run Code Online (Sandbox Code Playgroud)

我使用了Django 1.3 请求上下文文档中给出的默认列表,添加了请求处理器,并注释掉了您似乎不需要的那些.

模板上下文处理器的顺序通常并不重要,只要它们不定义重叠的变量名称即可.