2
나는 django (mongodb)를 사용하여 사용자 정의 사용자 인증 및 권한 부여 응용 프로그램을 구현하려고했습니다.Django-Mongodb : ConnectionError on 세션 변수 설정
세션 변수를 설정하는 중 연결 오류가 발생했습니다. 왜 이런 일이 일어나는지 알 수 없었습니다. 이 점을 이해하도록 도와주세요.
Setting.py
AUTHENTICATION_BACKENDS = (
'mongoengine.django.auth.MongoEngineBackend',
)
SESSION_ENGINE = 'mongoengine.django.sessions'
# AUTH_USER_MODEL = 'mongo_auth.MongoUser'
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.request",
"allauth.account.context_processors.account",
"allauth.socialaccount.context_processors.socialaccount",
'django.contrib.auth.context_processors.auth',
)
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'mongoTest',
'admin',
)
view.py
db = Connection().sms
...
def login(request):
form = LoginForm()
context_dict = {"form": form}
if request.POST:
form = LoginForm(request.POST)
if form.is_valid():
p = db.user.find_one({
"email": form.cleaned_data["email"],
"password": form.cleaned_data["password"]
})
if p:
request.session['member_id'] = p["_id"]
context_dict["message"] = "Successfully Login"
# request.session.set_test_cookie()
return render(request, "admin/profile.html", context_dict)
context_dict['message'] = "Your username and password didn't match."
return render(request, "admin/login.html", context_dict)
return render(request, "admin/login.html", context_dict)
...
eform.py
class LoginForm(forms.Form):
email = forms.EmailField(required=True)
password = forms.CharField(widget=forms.PasswordInput)
트레이스 백
ConnectionError at /login/
You have not defined a default connection
Request Method: POST
Request URL: http://127.0.0.1:8000/login/
Django Version: 1.6.5
Exception Type: ConnectionError
Exception Value:
You have not defined a default connection
Exception Location: /usr/local/lib/python2.7/dist-packages/mongoengine/connection.py in get_connection, line 93
Python Executable: /usr/bin/python
Python Version: 2.7.6
Python Path:
['/home/virus/nlocate/project/test-project/djangoMongoTestApp',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
/home/virus/nlocate/project/test-project/djangoMongoTestApp/admin/views.py in login
request.session['member_id'] = p["_id"] ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/base.py in __setitem__
self._session[key] = value ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/base.py in _get_session
self._session_cache = self.load() ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/mongoengine/django/sessions.py in load
sess = super(SessionStore, self)._get_session(*args, **kwargs)
if sess.get('_auth_user_id', None):
sess['_auth_user_id'] = str(sess.get('_auth_user_id'))
return sess
def load(self):
try:
s = MongoSession.objects(session_key=self.session_key, ...
expire_date__gt=datetime_now)[0]
if MONGOENGINE_SESSION_DATA_ENCODE:
return self.decode(force_unicode(s.session_data))
else:
return s.session_data
except (IndexError, SuspiciousOperation):
▶ Local vars
/usr/local/lib/python2.7/dist-packages/mongoengine/queryset/manager.py in __get__
queryset = queryset_class(owner, owner._get_collection()) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/mongoengine/document.py in _get_collection
db = cls._get_db() ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/mongoengine/document.py in _get_db
return get_db(cls._meta.get("db_alias", DEFAULT_CONNECTION_NAME)) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py in get_db
conn = get_connection(alias) ...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py in get_connection
raise ConnectionError(msg) ...
▶ Local vars
또한 예제 프로젝트 제안 사용자 정의 사용자 인증 및 django, mongodb 사용하여 승인을 제안하십시오
[이 게시물에 답변을 보았습니까 (http://stackoverflow.com/questions/21818610/mongoengine-connectionerror-you-have-not-defined-a-default-connection)? – okoboko
'request.session [ 'member_id'] = p [ "_ id"]'를 추가하면 연결 오류가 발생합니다. 뷰에서 db에 값을 삽입 할 수 있습니다. 그래서 위의 링크와 다른 점이 있기를 바랍니다. – Lionel