[英]Using sessions with mongoengine in Django 1.9
我需要在Django上使用noSQL数据库,并且在非官方的mongo插件列表中,由于其良好的反馈和相对全面的文档 ,我决定使用旧版mongoengine 0.9。
经过数天的反复试验,我能够连接到mongoDB,创建自定义用户模型(文档),将用户保存在DB中,甚至使用Django的auth函数(如authenticate()
, set_password()
。
当我尝试使用login(request,user)
。 在该方法中崩溃的行包括:
假设mongo用户文档在meta
中没有pk
属性,则request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
。 我可以通过将其直接更改为user.id
并将Mongo的默认ID设置为SESSION_KEY
。
在_get_user_session_key(request)
return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
_get_user_session_key(request)
。 抛出一个ValidationError
,表示{{id}} must be an integer
。 在外壳上转储get_user_model()
返回mongo_auth.MongoUser及其_meta.pk
读取(AutoField id)
_meta.pk
(AutoField id)
,这说明了为什么to_python
需要整数值。
实际上,有没有mongoengine方法可以使用Django的会话? 我已经在我的settings.py
中将mongoengine.django.sessions
设置为Session Engine,但是不确定是否还需要做其他事情。
在处理mongoengine的错误时,我实际上对它与Django的稳定性感到不太信服,我还有其他更好的选择吗?
mongoengine
v0.9是为Django 1.5构建的,并且从mongoengine
开始,Django的支持已与mongoengine
库分离。
这是当前回购用于支持Django 1.9的地方: https : //github.com/MongoEngine/django-mongoengine 。 该插件仍然需要测试,但是到目前为止,auth和session在我的项目上都可以正常工作。
关于此主题的讨论将在回购的问题跟踪器上继续进行。 随时加入并做出贡献。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.