【问题标题】:Unable to get custom context processor to be invoked无法调用自定义上下文处理器
【发布时间】:2011-01-21 21:06:57
【问题描述】:

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


在我的 settings.py 我有

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

在帐户子模块下,我现在有 context_processors.py 和以下内容:

def user_menu(请求): 返回 {'user_menu':'Hello World'}

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

{% if user.is_authenticated %} 菜单 {{user_menu}} {% 万一 %}

调用视图如下:

def 配置文件(请求): return render_to_response('accounts/profile.html',context_instance=RequestContext(request))

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

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

导入请求处理器模块 django.contrib.auth.context_processors 时出错:“没有名为 context_processors 的模块”

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

【问题讨论】:

  • 应该是TEMPLATE_CONTEXT_PROCESSORS

标签: python django django-templates django-context


【解决方案1】:

设置名称应为TEMPLATE_CONTEXT_PROCESSORS,带有一个S。

【讨论】:

  • 啊,谢谢... :p.. 我似乎进步了一点,现在我收到以下错误.. 对不起,我是 python 和 django 的新手 导入请求处理器模块 django 时出错.contrib.auth.context_processors: "没有名为 context_processors 的模块"
  • 说你通过确保你用 python 代码创建的每个文件夹都有一个 init.py 来修复它。这告诉 python,哟,它是一个模块。
猜你喜欢
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 2016-10-09
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多