Я хочу использовать базу данных mongodb вместе с каркасом django. Для этого я попытался создать небольшой тестовый проект с использованием mongoengine и этого описания: http://staltz.com/djangoconfi-mongoengine/#/8Как использовать django вместе с mongoengine?
К сожалению, это не работает. Соответствующие части моего settings.py, views.py и models.py смотрят как это:
settings.py:
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
import mongoengine
[...]
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'testApp',
)
[...]
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': '',
}
}
SESSION_ENGINE = 'mongoengine.django.sessions'
_MONGODB_USER = 'mongouser'
_MONGODB_PASSWD = 'test'
_MONGODB_HOST = 'localhost'
_MONGODB_NAME = 'testDb'
_MONGODB_DATABASE_HOST = \
'mongodb://%s:%[email protected]%s/%s' \
% (_MONGODB_USER, _MONGODB_PASSWD, _MONGODB_HOST, _MONGODB_NAME)
mongoengine.connect(_MONGODB_NAME, host=_MONGODB_DATABASE_HOST)
AUTHENTICATION_BACKENDS = (
'mongoengine.django.auth.MongoEngineBackend',
)
models.py
from mongoengine import *
# Create your models here.
class Choice(Document):
choice_text = StringField(max_length=200)
views.py
from django.shortcuts import render
from django.http import HttpResponse
from testApp.models import Choice
from django.contrib.auth import authenticate
def index(request):
newChoice = Choice(choice_text="First test")
newChoice.save()
return HttpResponse("Test")
user = authenticate(username='mongouser', password='test')
assert isinstance(user, mongoengine.django.auth.User)
Когда я запускаю тестовый сервер и открываю сайт testApp, я получаю модуль ImportError: No под именем django.sessions. Поэтому я удалил часть SESSION_ENGINE из моего settings.py, который был помечен как дополнительный в описании выше. Впоследствии я получаю ошибку «Нет модуля с именем django.auth».
У вас есть идея, что происходит не так и как настроить django вместе с mongoengine, чтобы использовать базу данных mongodb?
Какую версию Django, mongoengine и pymongo вы используете? –
Извините за поздний ответ. Я не имел доступа к машине за выходные: Джанго 1.8.2 mongoengine 0.10.0 PyMongo 3.0.2 Но на самом деле я не использую PyMongo. – Flo1895
Можете ли вы сказать мне, откуда вы находите _MONGODB_PASSWD и _MONGODB_USER? @ rahul-gupta –