我的应用程序的模板标签代码在上下文变量中为丢失的密钥(page
)抛出了一个KeyError。在我的模板中,我没有使用context.variableKeyName引用上下文变量,我只是引用variableKeyName(例如{% if is_paginated %}
)。在我的模板中,我可以毫无例外地引用密钥page
。
我应该如何使用模板标签中所需的键获取上下文?
以下是详细信息:
我正在使用django-profiles返回一些配置文件的列表:
url(r'^profiles/$', 'profiles.views.profile_list',
kwargs={ 'paginate_by':10 },
name='profiles_profile_detail'),
在这里调用这段代码: https://bitbucket.org/ubernostrum/django-profiles..
在我的模板中,我在调用模板标签之前测试{% if is_paginated %}
:
{% if is_paginated %}{% load paginator %}{% paginator 3 %}{% endif %}
(我使用的是受{django 1.3 http://www.tummy.com/.../django-pagination/更新的http://djangosnippets.org/snippets/2680/启发的模板标签)
但这会导致'paged'的KeyError。
答案 0 :(得分:1)
http://djangosnippets.org/snippets/2680/的文档(课堂上的评论)说:
必需的上下文变量:paged:Paginator.page()实例。
它也用在模板标签中:
paged = context['paged']
您需要为此模板标记提供此上下文变量才能生效。我认为最好的办法是复制profiles.views.profile_list
视图的代码并添加此上下文变量。不幸的是,它仍然是一个基于功能的视图 - 否则扩展它会更加清洁和容易。
答案 1 :(得分:0)
正确的代码方式是:
{% paginator v 3 %}
v
- 包含数据库项目的变量