Django 管理网站中通过 django-nonrel 使用 MongoDB 时显示“未连接到数据库”

0 投票
1 回答
743 浏览
提问于 2025-04-16 20:56

我正在按照这里的说明来配置我的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文件里。

撰写回答