天天看點

mongoengine 支援 sessions使用django-mongoengine使用

環境: 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