Django中间件错误 - 中间件改为1.7

时间:2017-04-11 08:39:31

标签: python django django-admin

每当我使用我的django项目运行我的本地服务器时,我收到一条警告和一条错误消息,说明在Django 1.7中全局中间件类已被更改 - 即使我使用的是1.8。我的博客http://127.0.0.1:8000/加载得很好,但是当我尝试加载管理站点时,我得到AttributeError at /admin/ 'WSGIRequest' object has no attribute 'user',据我所知,这与中间件有关。感谢您的帮助

编辑:我的中间件:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

错误讯息:

Warnings
?: (1_7.W001) Middleware_Classes is not set.
    Hint: Django 1.7 changed the global defaults for the middleware_classes. django.contrib.auth.middleware.AuthenticationMiddleware, django.contrib.sessions.middleware.SessionMiddleware, and django.contrib.messages.middleware.MessageMiddleware, were removed from the defaults. If your project needs this middleware then you should configure this middleware.

2 个答案:

答案 0 :(得分:9)

Django 1.10中引入了MIDDLEWARE设置。如果您使用的是Django 1.9或更早版本,它将无效,您应该使用MIDDLEWARE_CLASSES设置。

确保您使用的是正确版本的文档(例如Django 1.8Django 1.11),以便您遵循正确的说明。

答案 1 :(得分:4)

我使用django 1.11创建了我的项目但是当我将文件传输到Web服务器时,我遇到了fcgi的错误,这导致我降级为1.8。因此出现错误,因为管理员现在期待MIDDLEWARE_CLASSES 代替 MIDDLEWARE。 改变它解决了错误。