我正在context_processorDjango(1.11)上编写自己的自定义,并从auth0获取经过身份验证的用户的信息。这不是我第一次写它,我也不知道这个错误是从哪里来的:
context_processor
ImportError:模块“ auth.context_processors”未定义“ auth0_processors”属性/类
看起来是这样的:
auth / settings.py:
'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'auth.context_processors.auth0_processors', ],
auth / context_processors / auth0_processors.py:
def auth0_user(request): try: user = request.session['profile'] except Exception as e: user = None return {'auth0_user': user}
account / views.py:
def home(request): return render(request, 'home.html', {})
任何想法?
代替
'auth.context_processors.auth0_processors'
给出具体方法:
'auth.context_processors.auth0_processors.auth0_user'
至少那是该错误所抱怨的:
没有定义“ auth0_processors” 属性/类
它正在寻找类或属性,因此请尝试使用函数名称。
从文档中:
该 context_processors 选项是可调用的列表-所谓 的上下文处理器 -这需要一个request对象作为参数,返回项目的字典合并到上下文。
在回答您的评论时:
如果您始终需要相同的对象,则只需创建一个将所有必需的对象添加到上下文中的方法,而不是几个方法。
编辑:
还要注意,'django.template.context_processors.request'您可能已经request在上下文中拥有了完整的对象。如果只需要访问会话,则可能不需要自己的上下文处理器。
'django.template.context_processors.request'
request