我安装了来自:https://github.com/jmcclell/django-bootstrap-pagination的Django模板分页标记,当我按照所有说明操作时,我收到了'源'错误。
显然我做错了。
===========================================
编辑3
SETTINGS.py
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.request",
)
VIEW.py:
def pagination(request):
location = Location.objects.all()
return render_to_response('pagination.html',
location,
context_instance=RequestContext(request))
TEMPLATE
{% load bootstrap_pagination %}
<h1>Location</h1>
{% for location in location %}
<h2>{{ location.name }}</h2>
{% endfor %}
{% bootstrap_paginate location %}
错误:
AttributeError at /pagination/
'str' object has no attribute 'paginator'
Request Method: GET
Request URL: http://127.0.0.1:8000/pagination/
Django Version: 1.5.4
Exception Type: AttributeError
Exception Value:
'str' object has no attribute 'paginator'
模板渲染时出错
In template /home/jr/Documents/python/amapp/sdr/article/templates/pagination.html, error at line 7
'str' object has no attribute 'paginator'
1 {% load bootstrap_pagination %}
2
3
4
5
6
7 {% bootstrap_paginate location %}
答案 0 :(得分:1)
我是图书馆的作者,但是你必须原谅我,因为我已经很长一段时间没有使用过Python,而且我的核心大部分都是关于这个库的知识。
所以,@ WayBehind是正确的,你的第一个错误是使用&#34; page_obj&#34;。这只是一个例子。在您的情况下,您想使用&#34; location&#34;
然而,你从来没有看到过这个错误,因为你有一个更紧迫的错误,即图书馆不适合你的设置。我用Python 2.7用请求上下文预处理器编写了这个库。请仔细检查您是否已根据文档启用了上下文预处理器,请确保您使用的是Python&lt; 3.0。我知道这个库目前没有3.x.有一个图书馆的分支,其他一些人一直在努力解决这个问题,我正在积极关注它,以便在准备就绪时将这些变化拉出来,但截至目前它只是不起作用。
如果您使用的是Python 2.x并且启用了请求上下文预处理器,我不确定您为什么会收到该错误。如果你能确认这两件事是真的,我很乐意明天再仔细看看。
编辑:
这可能是也可能不是问题,但我注意到您使用实例的相同变量名称遍历您的Location对象:
{% for location in location %}
<h2>{{ location.name }}</h2>
{% endfor %}
{% bootstrap_paginate location %}
Django的模板范围是否可能使您传递给bootstra_paginate的对象是&#34; location&#34;的最后一个实例。而不是整套?这是对袖口猜测的第一次尝试,因为否则事情似乎是正确的。
答案 1 :(得分:0)
您是否遵循了所有步骤?
请求在context_processor(settings.py)中?
TEMPLATE_CONTEXT_PROCESSORS = (
....
"django.core.context_processors.request",
....
)
您在模板中使用obj_list,但obj_list中有什么内容吗?也许你必须使用&#34; location&#34;而不是&#34; obj_list&#34; ?因为我认为您的对象列表位于位置(位置对象)内,但您正在使用示例中的obj_list。在示例中,obj_list只是对象列表的变量示例。
修改强> 改变这个:
def pagination(request):
args = {}
args.update(csrf(request))
args['location'] = Location.objects.all()
return render_to_response('pagination.html', args)
为此:
from django.template import RequestContext
def pagination(request):
location = Location.objects.all()
return render_to_response('pagination.html', 'location':location,context_instance=RequestContext(request))
答案 2 :(得分:0)
使用page_obj
为我工作,对于任何想知道为什么在使用 Django 2.0.2 和 django-bootstrap4 0.0.6 时这不起作用的人。
我通过挖掘从Django的DEBUG模式出现的错误消息中的上下文变量来看到这一点。