当前位置: 首页 > 面试题库 >

django编写自定义上下文处理器

林运浩
2023-03-14
问题内容

我正在context_processorDjango(1.11)上编写自己的自定义,并从auth0获取经过身份验证的用户的信息。这不是我第一次写它,我也不知道这个错误是从哪里来的:

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在上下文中拥有了完整的对象。如果只需要访问会话,则可能不需要自己的上下文处理器。



 类似资料:
  • 我想编写自定义Lombok注释处理程序。我知道http://notatube.blogspot.de/2010/12/project-lombok-creating-custom.html.但是当前的lombok jar文件并不包含很多内容。类文件,但文件名为。症状自评量表。取而代之的是龙目山。 我发现,的。SCL. lombok文件是. class文件,Lombok的构建脚本在生成jar文件时重

  • 问题内容: 我有一个奇怪的问题,我想使用上下文处理器添加全局查询。这是我通过以下方法做到的: 这样在我的应用中创建了一个processor.py: 并在我的setting.py结尾处添加了以下内容: 最后,我通过以下观点: 在我的index.html模板上: 最后是我的网址: 我的foos显示没有问题,但是我的media_url和其他上下文消失了。可能是什么问题 问题答案: 当你指定时: 在设置文

  • 问题内容: 我想编写自定义的Lombok注释处理程序。我知道http://notatube.blogspot.de/2010/12/project-lombok- creating-custom.html 。但是当前的lombok jar文件并不包含许多.class文件,而是包含名为.SCL.lombok的文件。 我发现.SCL.lombok文件是.class文件,Lombok的生成脚本在生成ja

  • 问题内容: 我已经到了需要将某些变量传递到所有视图的地步(主要是自定义身份验证类型变量)。 有人告诉我编写自己的上下文处理器是执行此操作的最佳方法,但是我遇到了一些问题。 我的设置文件如下所示 如你所见,我有一个名为“ context_processors”的模块和一个名为“ say_hello”的函数。 看起来像 我是否可以假设自己现在可以在我的观点范围内进行以下操作? 现在,这在我的模板中什么

  • 问题内容: 问题 我希望某些观点仅适用于网站的高级用户。 在项目中的各种应用程序中如何使用此装饰器? 问题答案: 你不必为此编写自己的装饰器,就像中已经包含的那样。 还有一个扩展此装饰器的代码段(),该代码段非常适合你的用例。 而且,要(重新)使用装饰器,只需将装饰器放在路径中的模块中,即可从任何其他模块导入它。

  • 本文向大家介绍python 上下文管理器及自定义原理解析,包括了python 上下文管理器及自定义原理解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python 上下文管理器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python 提供了 with 语法用于简化资源操作的后续清除操作,是 try/finally 的替