django - request.user 在 settings.py 中使用时没有属性 user
问题描述
AttributeError: 'WSGIRequest' object has no attribute 'user'
当我尝试在我的 settings.py 文件中使用request.user 时,它会产生错误。难道我做错了什么?
设置.py:
def show_toolbar(request):
if DEBUG:
return True
#if not request.is_ajax() and request.user and request.user.UserSettings.debugger:
# return True
return False
DEBUG_TOOLBAR_CONFIG = {
'SHOW_TOOLBAR_CALLBACK': 'acacia2.settings.show_toolbar',
}
解决方案
如果没有看到您的中间件列表,我不能肯定地说,但这是我怀疑正在发生的事情:
为什么它不起作用
- 该
user
属性由contrib.auth
中间件设置。 - 您在上面定义的函数由 django-debug-toolbar 中间件调用。
如果您的 django-debug-toolbar 中间件contrib.auth
在您的设置中定义的中间件列表中的中间件之前MIDDLEWARE
,那么当请求到达您的调试工具栏中间件时,它还没有设置用户对象。因此你的错误('WSGIRequest' object has no attribute 'user'
)。
如何修复它
确保 django-debug-toolbar 中间件在 auth 中间件之后,例如:
MIDDLEWARE = [
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
'debug_toolbar.middleware.DebugToolbarMiddleware',
...
]
推荐阅读
- excel - 如何索引匹配唯一值?
- javascript - 如何为可溢出的 div 中始终可见的 thead 和 tbody 添加边框
- javascript - Flutter Web:FCM 无法注册 Service Worker
- git - 我们什么时候需要在 git 中使用 --track 命令
- java - 将 QueryDSl 与 Spring Boot App 集成时出现空指针异常
- git - 如何隔离git子模块的日志
- android - 同一个TextView中的多个id
- java - 基于单链表的FIFO队列结构
- powershell - 阵列不擦除
- spring-boot - 使用 crnk JSON API 实现 JSR-303 验证