Jas*_*ert 29 python django virtualenv
我正在运行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
Run Code Online (Sandbox Code Playgroud)
Shu*_*dal 23
简单解决方案
只是删除
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
Run Code Online (Sandbox Code Playgroud)
从
MIDDLEWARE_CLASSES = (
...
...
)
Run Code Online (Sandbox Code Playgroud)
在你的项目的settings.py中
那么,它应该工作!
Mic*_*ell 18
我得到了同样的错误.但是我忘了在运行我的服务器之前进入我的VirtualEnv.因此,请确保从终端首先激活virtualenv:source env/bin/activate 然后运行:python manage.py runserver
正如我们在Django 1.8发行说明中所看到的
django 1.7中添加了django.contrib.auth.middleware.SessionAuthenticationMiddleware。
而且您正在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发行说明指出:
SessionAuthenticationMiddleware类已删除。它没有提供任何功能,因为在Django 1.10中无条件地启用了会话身份验证。
在更新到此版本时,一点也不相关但相关的是
使用设置支持旧式中间件。MIDDLEWARE_CLASSES已删除
根据我的经验MIDDLEWARE_CLASSES,只需将其更改为正义MIDDLEWARE并'django.contrib.auth.middleware.SessionAuthenticationMiddleware'从列表中删除即可。
| 归档时间: |
|
| 查看次数: |
26899 次 |
| 最近记录: |