环境: 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, fields
class 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 中。
表示将session数据存储在mongo中, session的存储方式有三种,详情见django中的session详细说明。
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