Dogukan Tufekci
Dogukan Tufekci

Reputation: 3118

Where to initialize MongoDB connection in Django projects?

I wonder where I should initialize my MongoDB connection in my Django projects.

Currently I am initializing the client and db before my view functions in views.py:

import pymongo

from django.conf import settings


client = pymongo.MongoClient(settings.MONGO_URI)
db = client.get_default_database()


def some_view(request):
    pass

However I also need to use MongoDB in my models.py in conjunction with Django signals. What do you suggest?

Upvotes: 1

Views: 1426

Answers (2)

Dogukan Tufekci
Dogukan Tufekci

Reputation: 3118

I've decided to use project/mongodb.py (same folder as settings.py)

import pymongo

from django.conf import settings


client = pymongo.MongoClient(settings.MONGO_URI)
mongodb = client.get_default_database()

I am using two different settings files for local and production. Therefore, this approach makes it possible to use environment dependent settings, while enabling me to access mongodb variable from anywhere in the project.

Upvotes: 1

Dmitry Loparev
Dmitry Loparev

Reputation: 462

Maybe settings.py? Or even root __init__.py? Then you can import client and db everywhere you need it.

Upvotes: 1

Related Questions