无法调用自定义上下文处理器
我正在尝试创建一个自定义的上下文处理器,用来为登录用户显示一个菜单项列表。我已经做了以下几步:
在我的 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 个回答
5
设置的名称应该是 TEMPLATE_CONTEXT_PROCESSORS
,注意要有个S。