私がやろうとするとrequest.user.is_authenticated()
、ValidationError: None is not a valid ObjectId
問題を追跡しようとしていますが、原因はわかりません。MongoEngine(およびMongoDB)を使用しています。
私のsettings.pyには次のものがあります。
AUTHENTICATION_BACKENDS = (
'mongoengine.django.auth.MongoEngineBackend',
'rs.claimutil.auth_backend.ClaimAuthBackend',
)
SESSION_ENGINE = 'mongoengine.django.sessions'
これは私が得るものです:
トレースバック:get_response111のファイル"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py"。response= callback(request、* callback_args、 ** callback_kwargs)ファイル "/Users/bastiano/Documents/ttsf/rsrv/views.py" in reserved 11. if not request.user.is_authenticated():File "/Library/Frameworks/Python.framework/Versions/2.7/内部184のlib/python2.7 / site-packages / django / utils /functional.py」。self._setup()ファイル「/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- packages / django / utils / Functional.py "in _setup 248. self._wrapped = self._setupfunc()ファイル" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/ contrib / auth/middleware。py "in 16. request.user = SimpleLazyObject(lambda:get_user(request))File" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/middleware get_user8の.py"。request._cached_user=auth.get_user(request)ファイル" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/get_user101のinit.py"。user=backend.get_user(user_id)またはAnonymousUser()ファイル" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/django/auth .py "in get_user 149. return User.objects.with_id(user_id)File" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py "in with_id 923 .return self.filter(pk = object_id).first()ファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py" in first 843. result =self[0]ファイル" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py"in getitem 1136. return self._document._from_son(self._cursor [key])ファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py" in _cursor 579 .self._cursor_obj = self._collection.find(self._query、File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py" in_query375。 self._mongo_query = self._query_obj.to_query(self._document)to_query202のファイル"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py" = query.accept(QueryCompilerVisitor(document))ファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py" inaccept267。return visitor.visit_query(self)ファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py" in visit_query 159. return QuerySet._transform_query(self.document 、** query.query)_transform_query720のファイル"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/queryset.py"。value=field.prepare_query_value(op、 value)prepare_query_value455のファイル"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/base.py"。returnself.to_mongo(value)ファイル "/ Library / Frameworks /Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/base.py "in to_mongo 451. self.error(unicode(e))File"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoengine/base.py "in error 203. raise ValidationError(message、errors = errors、field_name = field_name)
例外タイプ:/ rs /claimでのValidationError例外値:Noneは有効なObjectIdではありません
なぜこれが起こっているのか考えはありますか?Django + MongoDBでユーザー認証を行う簡単な方法はありますか?
Views.py:
def claim(request):
if request.method == 'GET':
if not request.user.is_authenticated():
return shortcuts.redirect('rs/login')
all_b = dbutil.get_b(all=True)
return shortcuts.render_to_response('rs/index.html',
{'all_b':all_b},
context_instance=template.RequestContext(request))
elif request.method == 'POST':
わかりやすくするために、ビューの残りの部分は省略されています。ipdbを使用してデバッグしましたif not request.user.is_authenticated()
が、これが問題です。以前使ってみdjango.contrib.auth.decorators.login_required.decorator
ましたが、それも失敗しました。