mongoengine 支持 sessions使用

来源:互联网 发布:视频剪裁软件 编辑:程序博客网 时间:2024/06/03 23:39

环境: python3.5
centos 7

说明

在mongoengine 0.9 版本之后,mongoengine 不再支持django 的使用,也就是说无法再像以前使用的方法进行 支持 session 使用。 根据网上说明,若要使 mongoengine支持 sessions,需要使用最新的 django-mongoengine 包,虽然此包还在开发,并且不稳定,但是据使用的人的反馈,没出问题,能正常使用。

django-mongoengine使用

连接:

再 settings.py 文件中,添加以下内容:

MONGODB_DATABASES = {    "default": {        "name": database_name,        "host": database_host,        "port" : port,        "password": database_password,        "username": database_user,        "tz_aware": True, # if you using timezones in django (USE_TZ = True)    },}INSTALLED_APPS += ["django_mongoengine"]

文档

类似在以前mongoengine中进行文档定义一样,除了不用使用连接:

from django_mongoengine import Document, EmbeddedDocument, fieldsclass Comment(EmbeddedDocument):    created_at = fields.DateTimeField(        default=datetime.datetime.now, required=True, editable=False,    )    author = fields.StringField(verbose_name="Name", max_length=255, required=True)    email  = fields.EmailField(verbose_name="Email")    body = fields.StringField(verbose_name="Comment", required=True)class Post(Document):    created_at = fields.DateTimeField(        default=datetime.datetime.now, required=True, editable=False,    )    title = fields.StringField(max_length=255, required=True)    slug = fields.StringField(max_length=255, required=True, primary_key=True)    comments = fields.ListField(fields.EmbeddedDocumentField('Comment'))

Sessions

查看setting.py 中:
1, django.contrib.sessions.middleware.SessionMiddleware 是否在 MIDDLEWARE_CLASSES。如不再,则添加。
2, django.contrib.sessions 是否在 INSTALLED_APPS。如不再,则添加。

然后添加

SESSION_ENGINE = 'django_mongoengine.sessions'SESSION_SERIALIZER = 'django_mongoengine.sessions.BSONSerializer'

到 setting.py 中。

django提供能通过 SESSION_COOKIE_AGE设置过期时间的session cookie,在不会在session后台删除cookie。

参考:
http://docs.mongoengine.org/django.html
https://github.com/MongoEngine/mongoengine/blob/master/docs/django.rst

MongoEngine/django-mongoengine
https://github.com/MongoEngine/django-mongoengine

0 0