環境: 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=, 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=, required=True)
slug = fields.StringField(max_length=, 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