django templateTag中的context KeyError

时间:2012-07-11 14:46:07

标签: python django django-templates

我的应用程序的模板标签代码在上下文变量中为丢失的密钥(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。

2 个答案:

答案 0 :(得分:1)

http://djangosnippets.org/snippets/2680/的文档(课堂上的评论)说:

  

必需的上下文变量:paged:Paginator.page()实例。

它也用在模板标签中:

paged = context['paged']

您需要为此模板标记提供此上下文变量才能生效。我认为最好的办法是复制profiles.views.profile_list视图的代码并添加此上下文变量。不幸的是,它仍然是一个基于功能的视图 - 否则扩展它会更加清洁和容易。

答案 1 :(得分:0)

正确的代码方式是:

{% paginator v 3 %}

v - 包含数据库项目的变量