【发布时间】:2021-03-09 16:07:53
【问题描述】:
我想将 mongodb 数据库与 django 框架一起使用。为此,我尝试使用 mongoengine 和以下描述设置一个小型测试项目:http://staltz.com/djangoconfi-mongoengine/#/8
不幸的是,它不起作用。我的 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:%s@%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)
当我启动 testserver 并打开 testApp 网站时,我收到“ImportError: No module named django.sessions”。因此,我从我的 settings.py 中删除了 SESSION_ENGINE 部分,该部分在上面的描述中被标记为可选。之后我收到“没有名为 django.auth 的模块”错误。
您知道出了什么问题以及如何将 django 与 mongoengine 一起设置以使用 mongodb 数据库吗?
【问题讨论】:
-
您使用的是哪个版本的 Django、mongoengine 和 pymongo?
-
抱歉,回答迟了。周末没上机:Django 1.8.2 mongoengine 0.10.0 pymongo 3.0.2 但其实我没有用pymongo。
-
你能告诉我你从哪里找到 _MONGODB_PASSWD 和 _MONGODB_USER 吗? @rahul-gupta
-
@AdarshTiwari 这是您的 MongoDB 用户名和密码。