无法获取要调用的自定义上下文处理器

时间:2010-02-27 20:57:47

标签: python django django-templates django-context

我正在尝试创建一个自定义上下文处理器,它将为登录用户呈现菜单项列表。我做了以下事情:


在我的settings.py中,我有

TEMPLATE_CONTEXT_PROCESSOR = (
    'django.contrib.auth.context_processors.auth',
    'mysite.accounts.context_processors.user_menu',
)

在帐户子模块下,我现在有以下 context_processors.py

def user_menu(request):
    return {'user_menu':'Hello World'}

在我的模板页面上,我有以下内容:

{% if user.is_authenticated %}
Menu
{{user_menu}}
{% endif %}

调用视图如下:

def profile(request):
    return render_to_response('accounts/profile.html',context_instance=RequestContext(request))

但是我无法让{{user_menu}}在页面上呈现任何内容,我知道用户已经过身份验证,因为模板的其他部分正确地呈现了类似的检查。我在这里错过了一些东西。请帮忙 谢谢

编辑:谢谢Ben,Daniel,我已修复TEMPLATE_CONTEXT_PROCESSOR中的(S),但Django现在无法解析模块,我收到以下消息

Error importing request processor module django.contrib.auth.context_processors: "No module named context_processors"

更新:我通过将路径更改为django.core.context_processors.auth来修复它,好像模块已被移动

1 个答案:

答案 0 :(得分:5)

设置名称应为TEMPLATE_CONTEXT_PROCESSORS,带有S.