3

以前はdjangoアプリで管理サイトを使用していましたが、今は何が問題なのかわかりません。

私はmongodbsettings.pyデータベース構成を持っています:

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine', 
        'NAME': 'myapp', 
        'USER': 'username',
        'PASSWORD': '********'
        'HOST': 'myserver.com',          
        'PORT': '27157',
        'SUPPORTS_TRANSACTIONS': False,
    }
}

データベースから情報を読み取って表示するビューが既にいくつかあるため、これらの設定が正しいことはわかっています。したがって、私のアプリケーションがmongodbデータベースに接続できるという事実を知っています。

管理サイトを有効にするために、urls.py、admin.py、および settings.py を構成しました (そして、以前は機能していました)。ただし、アクセスしようとすると、次のようになります。

Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/sites.py" in wrapper
  214.                 return self.admin_view(view, cacheable)(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/utils/decorators.py" in _wrapped_view
  93.                     response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  79.         response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/sites.py" in inner
  195.             if not self.has_permission(request):
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/sites.py" in has_permission
  148.         return request.user.is_active and request.user.is_staff
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/middleware.py" in __get__
  9.             request._cached_user = get_user(request)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/__init__.py" in get_user
  107.         user_id = request.session[SESSION_KEY]
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py" in __getitem__
  47.         return self._session[key]
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py" in _get_session
  195.                 self._session_cache = self.load()
File "/usr/local/lib/python2.6/dist-packages/mongoengine/django/sessions.py" in load
  26.             s = MongoSession.objects(session_key=self.session_key,
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
  41.         _connection[identity] = _get_connection(reconnect=reconnect)
File "/usr/local/lib/python2.6/dist-packages/mongoengine/connection.py" in _get_connection
  33.             raise ConnectionError('Cannot connect to the database')

Exception Type: ConnectionError at /admin/
Exception Value: Cannot connect to the database

にいくつかのデバッグ情報を導入しましmongoengine/connection.pyた。データベースへの接続に使用される接続設定は次のとおりです。

{'host': 'localhost', 'port': 27017}

これは、私が提供した設定ではなく、デフォルトの接続設定を使用していることを意味しますsettings.py。これを引き起こしている可能性のあるものについて何か考えはありますか? データベース設定が管理サイトに渡されないのはなぜですか? 管理者設定で何かをするのを忘れたのでしょうか?

編集:これらの指示に従って
、django アプリを mongodb データベースで動作するように構成しました。私はdjangotoolboxdjango-nonrelを使用しています。

'ENGINE': 'django_mongodb_engine' を設定するときに使用する必要がある mongodb エンジンは、 mongoengine ではなくdjango-mongodb-engineであることに気付きました。しかし、スタック トレースでは、mongoengine を使用していることがわかります。(django-mongodb-engine は mongoengine に依存しません)ビューで正しいものが使用されていると推測しています (それが機能する理由です)が、管理者は何らかの理由で mongoengine を使用していますか?!?! 正しく理解していれば、私のアプリはmongoengineが動作する必要さえありません。しばらく前に実験していたので、インストールされているだけです。

4

2 に答える 2

1

I have found the problem and I'm just posting it here to close the question.

I had the line SESSION_ENGINE = 'mongoengine.django.sessions' somewhere in my settings.py (as a result of the evil copy/past) and that was making my application to use mongoengine instead of django-mongodb-engine.

于 2011-07-19T10:19:44.333 に答える