能否将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
相关产品推荐
相关产品推荐

