【发布时间】:2017-03-20 18:54:35
【问题描述】:
我的 Django 项目出现错误,我想找到解决方案。
我用 MySQL 数据库开发了我的项目,但经过一些讨论,出于不同的原因,我想用 NoSQL 数据库(以及 Django MongoDB 命令的 Django ORM 命令)替换 MySQL:
- 能够处理数十亿行
- 制作大数据的能力(Hadoop,...)
我的 Django 项目设置如下:
import mongoengine
from mongoengine import connect
AUTHENTICATION_BACKENDS = (
'mongoengine.django.auth.MongoEngineBackend',
)
SESSION_ENGINE = 'mongoengine.django.sessions'
SESSION_SERIALIZER = 'mongoengine.django.sessions.BSONSerializer'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.dummy'
}
}
MONGO_DATABASE_NAME = 'XXX'
MONGO_HOST = '172.30.10.X'
MONGO_PORT = 27017
connect(MONGO_DATABASE_NAME, host=MONGO_HOST, port=MONGO_PORT)
而且,当我跑步时:python manage.py runserver
我明白了:
System check identified 1 issue (0 silenced).
March 20, 2017 - 10:33:20
Django version 1.10.3, using settings 'Etat_civil.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Unhandled exception in thread started by <function wrapper at 0x104994140>
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 142, in inner_run
handler = self.get_handler(*args, **options)
File "/usr/local/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/runserver.py", line 27, in get_handler
handler = super(Command, self).get_handler(*args, **options)
File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 64, in get_handler
return get_internal_wsgi_application()
File "/usr/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 59, in get_internal_wsgi_application
sys.exc_info()[2])
File "/usr/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 49, in get_internal_wsgi_application
return import_string(app_path)
File "/usr/local/lib/python2.7/site-packages/django/utils/module_loading.py", line 20, in import_string
module = import_module(module_path)
File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/valentinjungbluth/Desktop/Django/Etat_civil/Etat_civil/wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "/usr/local/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
return WSGIHandler()
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 153, in __init__
self.load_middleware()
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 58, in load_middleware
mw_instance = mw_class()
File "/usr/local/lib/python2.7/site-packages/django/contrib/sessions/middleware.py", line 15, in __init__
engine = import_module(settings.SESSION_ENGINE)
File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
django.core.exceptions.ImproperlyConfigured: WSGI application 'Etat_civil.wsgi.application' could not be loaded; Error importing module: 'No module named django.sessions'
我知道最新的mongoengine 更新不支持会话,所以我下载了mongoengine==0.9.0,但它似乎不起作用。
你有什么想法吗?
【问题讨论】:
-
您的
MIDDLEWARE设置中是否有这个:'django.contrib.sessions.middleware.SessionMiddleware'和您的INSTALLED_APPS这个:'django.contrib.sessions'? -
@nik_m 是的,完全正确^^ Django 在我的本地主机 MacOSX 上使用,而 MongoDB 位于远程服务器上
-
不是重复的,因为我已经尝试过答案:安装早期版本...
-
我投票决定以重复的形式关闭——正如我在另一个问题的评论中所说,你不能指望 mongoengine 0.9.0 支持最新版本的 Django。如果您的问题是“我如何将 mongodb 和 Django 一起使用,那么这就是要求提供与 Stack Overflow 无关的建议。
-
好的,我明白了。在 Django 和 NoSQL(MongoDB,Cassandra,...)之间不存在一个很好的解决方案,这太糟糕了。我会做更多的研究以获得信息和支持的 NoSQL 版本。
标签: python django django-sessions