added BSONSerializer
This commit is contained in:
parent
1145c72b01
commit
c18f8c92e7
@ -90,10 +90,15 @@ session backend, ensure that your settings module has
|
|||||||
into your settings module::
|
into your settings module::
|
||||||
|
|
||||||
SESSION_ENGINE = 'mongoengine.django.sessions'
|
SESSION_ENGINE = 'mongoengine.django.sessions'
|
||||||
|
SESSION_SERIALIZER = 'mongoengine.django.sessions.BSONSerializer'
|
||||||
|
|
||||||
Django provides session cookie, which expires after ```SESSION_COOKIE_AGE``` seconds, but doesn't delete cookie at sessions backend, so ``'mongoengine.django.sessions'`` supports `mongodb TTL
|
Django provides session cookie, which expires after ```SESSION_COOKIE_AGE``` seconds, but doesn't delete cookie at sessions backend, so ``'mongoengine.django.sessions'`` supports `mongodb TTL
|
||||||
<http://docs.mongodb.org/manual/tutorial/expire-data/>`_.
|
<http://docs.mongodb.org/manual/tutorial/expire-data/>`_.
|
||||||
|
|
||||||
|
.. note:: ``SESSION_SERIALIZER`` is only necessary in Django 1.6 as the default
|
||||||
|
serializer is based around JSON and doesn't know how to convert
|
||||||
|
``bson.objectid.ObjectId`` instances to strings.
|
||||||
|
|
||||||
.. versionadded:: 0.2.1
|
.. versionadded:: 0.2.1
|
||||||
|
|
||||||
Storage
|
Storage
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from bson import json_util
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.sessions.backends.base import SessionBase, CreateError
|
from django.contrib.sessions.backends.base import SessionBase, CreateError
|
||||||
from django.core.exceptions import SuspiciousOperation
|
from django.core.exceptions import SuspiciousOperation
|
||||||
@ -103,3 +104,15 @@ class SessionStore(SessionBase):
|
|||||||
return
|
return
|
||||||
session_key = self.session_key
|
session_key = self.session_key
|
||||||
MongoSession.objects(session_key=session_key).delete()
|
MongoSession.objects(session_key=session_key).delete()
|
||||||
|
|
||||||
|
|
||||||
|
class BSONSerializer(object):
|
||||||
|
"""
|
||||||
|
Serializer that can handle BSON types (eg ObjectId).
|
||||||
|
"""
|
||||||
|
def dumps(self, obj):
|
||||||
|
return json_util.dumps(obj, separators=(',', ':')).encode('ascii')
|
||||||
|
|
||||||
|
def loads(self, data):
|
||||||
|
return json_util.loads(data.decode('ascii'))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user