방금 django_digest를 내 응용 프로그램에 통합하기 시작했습니다. 시작으로 저는 @httpdigest 데코레이터를 제 견해 중 하나에 추가했습니다. 연결하려고하면 django_digest/backend/db.py에 KeyError 예외가 발생합니다. 어떤 DB를 구성 하느냐에 따라 다른 위치에 다른 KeyError를 얻습니다. Django 1.2.1을 MySQL (sqlite로 테스트)과 함께 사용하고 있습니다. 모든 설정 옵션에 기본값을 사용하고 있습니다.django-digest의 DB 백엔드에서 KeyError 받기
내가 알 수있는 한, 나는 모든 지시 사항을 따르지만 이것으로 하루 종일 고민 중이다. 나는 django-digest와 python-digest의 저장소 버전을 사용하고있다. 어떤 조종사라도 크게 감사 할 것입니다. MySQL의와
Traceback (most recent call last):
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/core/servers/basehttp.py", line 674, in __call__
return self.application(environ, start_response)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/core/handlers/wsgi.py", line 248, in __call__
signals.request_finished.send(sender=self.__class__)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/dispatch/dispatcher.py", line 162, in send
response = receiver(signal=self, sender=sender, **named)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django_digest-1.8-py2.5.egg/django_digest/backend/db.py", line 16, in close_connection
_connection.close()
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 186, in close
if self.settings_dict['NAME'] != ":memory:":
KeyError: 'NAME'
: sqlite가와
아래 SQLite는과 MySQL을위한
추적 정보
Traceback (most recent call last):
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/core/servers/basehttp.py", line 674, in __call__
return self.application(environ, start_response)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/core/handlers/wsgi.py", line 241, in __call__
response = self.get_response(request)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/core/handlers/base.py", line 142, in get_response
return self.handle_uncaught_exception(request, resolver, exc_info)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/core/handlers/base.py", line 166, in handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/core/handlers/base.py", line 80, in get_response
response = middleware_method(request)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django_digest-1.8-py2.5.egg/django_digest/middleware.py", line 13, in process_request
if (not self._authenticator.authenticate(request) and
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django_digest-1.8-py2.5.egg/django_digest/__init__.py", line 86, in authenticate
partial_digest = self._account_storage.get_partial_digest(digest_response.username)
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django_digest-1.8-py2.5.egg/django_digest/backend/db.py", line 97, in get_partial_digest
cursor = get_connection().cursor()
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/db/backends/__init__.py", line 75, in cursor
cursor = self._cursor()
File "/home/robm/projects/gcs/server/gcs2.5/lib/python2.5/site-packages/django/db/backends/mysql/base.py", line 281, in _cursor
if settings_dict['USER']:
KeyError: 'USER'
업데이트은 - 장고 1.2에 고유 한 것으로 보인다 멀티 데이터베이스 백엔드. 같은 것으로
_connection = backend.DatabaseWrapper({
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_NAME': settings.DATABASE_NAME,
'DATABASE_OPTIONS': settings.DATABASE_OPTIONS,
'DATABASE_PASSWORD': settings.DATABASE_PASSWORD,
'DATABASE_PORT': settings.DATABASE_PORT,
'DATABASE_USER': settings.DATABASE_USER,
'TIME_ZONE': settings.TIME_ZONE,
})
:에서 django_digest의 백엔드/db.py의 데이터베이스 래퍼를 수정
_connection = backend.DatabaseWrapper({
'HOST': settings.DATABASE_HOST,
'NAME': settings.DATABASE_NAME,
'OPTIONS': settings.DATABASE_OPTIONS,
'PASSWORD': settings.DATABASE_PASSWORD,
'PORT': settings.DATABASE_PORT,
'USER': settings.DATABASE_USER,
'TIME_ZONE': settings.TIME_ZONE,
})
하면 해결됩니다.
지금은 https로 HTTPBasicAuth를 사용하도록 전환했지만 대신 다음 주에 패치를 할 수있는 기회가 주어질 것입니다.