### Navigation

- index
- next |
- previous |
- MongoEngine 0.6.13 documentation »

# Using MongoEngine with Django

Note

Updated to support Django 1.4

## Connecting

In your settings.py file, ignore the standard database settings (unless you also plan to use the ORM in your project), and instead call `connect()` somewhere in the settings module.

## Authentication

MongoEngine includes a Django authentication backend, which uses MongoDB. The `User` model is a MongoEngine `Document`, but implements most of the methods and attributes that the standard Django `User` model does - so the two are moderately compatible. Using this backend will allow you to store users in MongoDB but still use many of the Django authentication infrastucture (such as the `login_required()` decorator and the `authenticate()` function). To enable the MongoEngine auth backend, add the following to you settings.py file:

    AUTHENTICATION_BACKENDS = (
        'mongoengine.django.auth.MongoEngineBackend',
    )

The `auth` module also contains a `get_user()` helper function, that takes a user’s `id` and returns a `User` object.

New in version 0.1.3.

## Sessions

Django allows the use of different backend stores for its sessions. MongoEngine provides a MongoDB-based session backend for Django, which allows you to use sessions in you Django application with just MongoDB. To enable the MongoEngine session backend, ensure that your settings module has `'django.contrib.sessions.middleware.SessionMiddleware'` in the `MIDDLEWARE_CLASSES` field and `'django.contrib.sessions'` in your `INSTALLED_APPS`. From there, all you need to do is add the following line into you settings module:

    SESSION_ENGINE = 'mongoengine.django.sessions'

New in version 0.2.1.

## Storage

With MongoEngine’s support for GridFS via the `FileField`, it is useful to have a Django file storage backend that wraps this. The new storage module is called `GridFSStorage`. Using it is very similar to using the default FileSystemStorage.:

    from mongoengine.django.storage import GridFSStorage
    fs = GridFSStorage()

    filename = fs.save('hello.txt', 'Hello, World!')

All of the Django Storage API methods have been implemented except `path()`. If the filename provided already exists, an underscore and a number (before # the file extension, if one exists) will be appended to the filename until the generated filename doesn’t exist. The `save()` method will return the new filename.:

    >>> fs.exists('hello.txt')
    True
    >>> fs.open('hello.txt').read()
    'Hello, World!'
    >>> fs.size('hello.txt')
    13
    >>> fs.url('hello.txt')
    'http://your_media_url/hello.txt'
    >>> fs.open('hello.txt').name
    'hello.txt'
    >>> fs.listdir()
    ([], [u'hello.txt'])

All files will be saved and retrieved in GridFS via the :class::FileDocument document, allowing easy access to the files without the GridFSStorage backend.:

    >>> from mongoengine.django.storage import FileDocument
    >>> FileDocument.objects()
    [<FileDocument: FileDocument object>]

New in version 0.4.

### Navigation

- index
- next |
- previous |
- MongoEngine 0.6.13 documentation »