You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将Django REST Framework与MongoDB搭配使用?配置遇导入错误求助

绝对可以把Django REST Framework(DRF)和MongoDB搭配使用!我看你遇到了导入模块的问题,这大概率是个小细节出错了,我帮你一步步梳理清楚。

Django REST Framework + MongoDB 完整搭建指南

一、「模块未定义」错误的原因

你提到安装的是django-rest-framework-mongoengine==3.3.1,但在settings.py里添加的是rest_frame_mongoengine——这里的核心问题是:这个包的正确应用名称是rest_framework_mongoengine(注意是下划线连接的rest_framework,不是rest_frame)!少写了一个work,导致Python找不到对应的模块。

二、正确的环境配置步骤

结合你给出的版本(这些版本是相互兼容的),我整理了靠谱的配置流程:

1. 确保依赖完整安装

先重新执行安装命令,确保所有包都正确安装到当前环境:

pip install Django==2.0.4 django-rest-framework-mongoengine==3.3.1 djangorestframework==3.8.2 mongoengine==0.15.0 pymongo==3.6.1 pytz==2018.4

2. 配置settings.py

  • 在INSTALLED_APPS中添加正确的应用名:
INSTALLED_APPS = [
    # 保留Django默认的应用(比如'django.contrib.admin'等)
    'rest_framework',
    'rest_framework_mongoengine',  # 这里是正确的名称!
]
  • 替换默认数据库配置为MongoDB连接:
# 禁用Django默认的SQL数据库引擎
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.dummy',
    }
}

# 配置MongoEngine连接MongoDB
import mongoengine
mongoengine.connect(
    db='你的数据库名称',
    host='localhost',  # 若MongoDB部署在远程,替换为对应地址
    port=27017,
    # 若数据库有认证,取消注释以下两行
    # username='你的用户名',
    # password='你的密码'
)

3. 编写示例代码验证

这里给你一个简单的示例,快速验证配置是否生效:

模型(app/models.py)

from mongoengine import Document, StringField, IntField

class Book(Document):
    title = StringField(required=True, max_length=200)
    author = StringField(required=True)
    pages = IntField()

序列化器(app/serializers.py)

from rest_framework_mongoengine.serializers import DocumentSerializer
from .models import Book

class BookSerializer(DocumentSerializer):
    class Meta:
        model = Book
        fields = '__all__'

视图集(app/views.py)

from rest_framework_mongoengine.viewsets import ModelViewSet
from .models import Book
from .serializers import BookSerializer

class BookViewSet(ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

路由(project/urls.py)

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from app.views import BookViewSet

router = DefaultRouter()
router.register(r'books', BookViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

三、常见问题排查

  • 如果还是出现导入错误,先检查虚拟环境(如果使用的话)是否激活,用pip list查看已安装包,确认django-rest-framework-mongoengine存在于当前环境。
  • 你选择的版本组合是适配的:django-rest-framework-mongoengine==3.3.1正好支持Django 2.x版本,无需担心兼容性问题。

内容的提问来源于stack exchange,提问作者user9704082

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:43:15