Django 管理网站中通过 django-nonrel 使用 MongoDB 时显示“未连接到数据库”
我正在按照这里的说明来配置我的Django应用的管理网站:https://docs.djangoproject.com/en/dev/ref/contrib/admin/。我启动了开发服务器,但当我尝试访问/admin
这个网址时,出现了一个错误,提示没有连接到数据库。我是Django的新手,以为不需要通过Django的模型层来明确创建数据库连接。请问我漏掉了什么?
Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
178. response = middleware_method(request, response)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/middleware.py" in process_response
36. request.session.save()
File "/usr/local/lib/python2.6/dist-packages/mongoengine/django/sessions.py" in save
48. s = MongoSession(session_key=self.session_key)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py" in _get_session_key
175. self._session_key = self._get_new_session_key()
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py" in _get_new_session_key
167. if not self.exists(session_key):
File "/usr/local/lib/python2.6/dist-packages/mongoengine/django/sessions.py" in exists
34. return bool(MongoSession.objects(session_key=session_key).first())
File "/usr/local/lib/python2.6/dist-packages/mongoengine/queryset.py" in __get__
1151. db = _get_db()
File "/usr/local/lib/python2.6/dist-packages/mongoengine/connection.py" in _get_db
45. raise ConnectionError('Not connected to the database')
Exception Type: ConnectionError at /admin/
Exception Value: Not connected to the database
我运行了manage.py syncdb
,可以看到连接到mongodb数据库是成功的(它在我的mongodb数据库中创建了几个集合)。那么,这种情况和上面的情况有什么不同呢?
谢谢
1 个回答
1
(我把这个发成答案,这样你可以关闭这个问题)
根据文档,你确实需要使用connect()
方法来明确连接到MongoDB。这可以很简单
connect('dbname')
如果你在本地机器上运行MongoDB,它还接受一些参数,比如host
(主机名)、port
(端口,应该是一个整数)、username
(用户名)和password
(密码),另外还接受一些其他有效的参数,这些参数可以在pymongo.connection.Connection的文档中找到。
另外,根据文档,你应该把connect()
的调用放在settings.py
文件里。