我正在运行virtualenv尝试学习Django,但无论出于何种原因安装Django后,当我尝试访问默认的Django起始页时,我在浏览器中收到以下错误:
发生服务器错误。请联系管理员。
在我运行服务器的终端窗口中显示以下错误:
不正确的配置:模块“django.contrib.auth.middleware”没有定义“SessionAuthenticationMiddleware”属性/类
如果有人对我为什么在virtualenv中收到此错误有任何见解,我会很感激。不过,我可以让服务器在非virtualenv设置中正确运行。
这是完整的堆栈跟踪:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.egg/django/core/handlers/wsgi.py", line 187, in __call__
self.load_middleware()
File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.egg/django/core/handlers/base.py", line 45, in load_middleware
mw_class = import_by_path(middleware_path)
File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.egg/django/utils/module_loading.py", line 31, in import_by_path
error_prefix, module_path, class_name))
ImproperlyConfigured: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
[16/Sep/2014 22:44:30] "GET / HTTP/1.1" 500 59
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.egg/django/core/handlers/wsgi.py", line 187, in __call__
self.load_middleware()
File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.egg/django/core/handlers/base.py", line 45, in load_middleware
mw_class = import_by_path(middleware_path)
File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.egg/django/utils/module_loading.py", line 31, in import_by_path
error_prefix, module_path, class_name))
ImproperlyConfigured: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
答案 0 :(得分:20)
简易解决方案
删除
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
这
MIDDLEWARE_CLASSES = (
...
...
)
在项目的 settings.py
中然后,它应该工作!
答案 1 :(得分:18)
我得到了同样的错误。但是我忘了在运行我的服务器之前进入我的VirtualEnv。
因此,请确保从终端首先激活virtualenv:source env/bin/activate
然后运行:python manage.py runserver
答案 2 :(得分:5)
参考doc,你活跃的virtualenv中的Django必须是Django 1.7。和
此中间件必须出现在MIDDLEWARE_CLASSES中的django.contrib.auth.middleware.AuthenticationMiddleware之后
它能解决你的问题吗?
答案 3 :(得分:5)
django.contrib.auth.middleware.SessionAuthenticationMiddleware was added in Django 1.7.
您在虚拟环境中使用Django-1.6.5
,因此出现does not define
错误。
可能你的"普通"安装了更新版本的Django。环境和服务器正确运行。要在你的虚拟环境中修复这个升级Django版本(在更新Django之前一定要激活你的虚拟环境!)
现在将我的两分钱加到答案中,因为到目前为止所有内容都是ZZY和user1776955重复的
如果你运行pip install -U Django
,你可能会将你的版本提升到高于1.10的版本,然后将适用以下内容:
在Django 1.10中,无论如何都会启用会话验证 是否启用了SessionAuthenticationMiddleware(在此处 点SessionAuthenticationMiddleware没有意义)
因此删除它是安全的,如果你更新过去2.0,你必须删除它,因为Django 2.0 release notes声明:
在更新到此版本时也有点不相关但相关
使用settings.MIDDLEWARE_CLASSES支持旧式中间件
根据我的经验,只需将MIDDLEWARE_CLASSES
更改为MIDDLEWARE
并从列表中删除'django.contrib.auth.middleware.SessionAuthenticationMiddleware'
即可。
答案 4 :(得分:3)
运行
python3 manage.py runserver
而不是
python manage.py runserver
或
./manage.py runserver
您还可以编辑manage.py替换
的第一行\#!/usr/bin/env python
通过
\#!/usr/bin/env python3
然后运行./manage.py runserver
(它似乎有效,我不知道它是否得到django项目的授权)
答案 5 :(得分:2)
我用Django 1.7创建了一个Django项目,并试图用Django 1.6.8运行它。我也得到了同样的错误。我刚刚删除了
' django.contrib.auth.middleware.SessionAuthenticationMiddleware',
这
MIDDLEWARE_CLASSES =
在我的项目的settings.py中。 它有效。
答案 6 :(得分:2)
我今天遇到了类似的问题(使用OS X Mavericks)。
首先,您是否已将django安装到您的基本操作系统?在使用Virtualenv之前,我直接在操作系统上运行Django。我注意到的主要是我通常输入django-admin,而不是django-admin.py。这是在virtualenv之外调用Django,版本为1.7.1。
在我的virtualenv之外,我运行了 pip uninstall django ,然后又回到了我的Virtualenv。在最后运行django-admin --version而没有.py返回“zsh:command not found:django-admin”(它曾经返回1.7.1),但运行django-admin。 py --version返回1.6.5。
检查以确保您不会直接从操作系统中引入外部版本的django,您可能需要输入django-admin.py
答案 7 :(得分:2)
看起来你使用的是版本1.7之前的django版本(具体为1.6.4),并且直到django 1.7才引入SessionAuthenticationMiddleware。因此错误
在右下角,您可以选择django的版本。选择适当的版本,并按照特定于您正在使用的django版本的教程进行操作。
答案 8 :(得分:1)
所以,我刚刚运行了virtualenv的全新安装并启动了服务器,现在它按预期工作了。问题解决了。
答案 9 :(得分:0)
确保从项目的根目录运行$ source bin / activate。否则,请继续擦除您的项目并制作一个新项目。如果你想成为一个django dev,那就准备好制作很多virtualenv了。
例如,当处理不同的分支时,有时更容易拥有两个不同的virtualenv等,当你移动到服务器时,你可能也会从virtualenv运行。因此,善于制作并完成各个步骤是个好主意。
使用$ cp命令在目录之间复制文件很容易。
答案 10 :(得分:0)
我正在运行Windows7 / 64版本,出现了同样的错误。同意user1776955,他指出了Django的版本问题。 所以最简单的方法是指向shell中的Django-admin.py。就我而言,它是: python env \ scripts \ django-admin.py startproject my_django15_project
答案 11 :(得分:0)
只需在Python 3中运行它:
python3 manage.py runserver
如果可行,请考虑通过以下方式应用某些应用迁移:python3 manage.py migrate
。
答案 12 :(得分:0)
我有相同的错误:
File "C:\Users\DANI3\Envs\recetario\lib\site-packages\django\utils\module_loading.py", line 23, in import_string
return getattr(module, class_name)
django.core.exceptions.ImproperlyConfigured: WSGI application 'recetario.wsgi.application' could not be loaded; Error importing module: 'Module "social_django.middleware" does not define a "SocialAythExceptionMiddleware" attribute/class'
我已更正错误,请执行以下更改:
'social_django.middleware.SocialAuthExceptionMiddleware',