Django2.1.2创建工程后进入admin站点管理的时候报了:WSGIRequest' object has no attribute 'user 的错误

查stackoverflow和CSDN,这是由于Django版本的问题,在1.10之前,中间件的key为MIDDLEWARE_CLASSES;在1.10之后,中间件的key为MIDDLEWARE。
  • 项目的初始配置:
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',     
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',   
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)
将key值从MIDDLEWARE_CLASSES更改为MIDDLEWARE后,重新运行程序。

报错:

ImportError: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
在‘django.contrib.auth.middleware’ module的文件里,确实没有找到SessionAuthenticationMiddleware中间件,原因见‘remove SessionAuthenticationMiddleware中间件’,注释掉这一句后,再次运行程序,问题解决。

MIDDLEWARE = (     # 适配Django 2.0
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',     # 目前打开会报错
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',   
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

remove SessionAuthenticationMiddleware中间件

在github查看源码,在更改history里面有原因说明:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 原因:由于Django1.10版本已经默认实现了session验证机制,SessionAuthenticationMiddleware中间件在Django2.0版本被弃用了。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值