Django 1.11是否兼容djongo包?启动服务器报错如何解决?
Django 1.11与djongo兼容性问题解答
直接给结论:Django 1.11版本并不兼容当前主流版本的djongo包,这正是你遇到报错的核心原因。
报错原因分析
你看到的ModuleNotFoundError: No module named 'django.db.models.fields.mixins',是因为FieldCacheMixin这个类是在Django 2.0版本才新增的模块,而djongo的代码中直接引用了这个仅在高版本Django存在的类。当你在Django 1.11环境下加载djongo时,自然找不到这个模块,从而触发报错——这也解释了为什么切换到Django 2.x后一切正常。
可行的解决方案
针对这个问题,你有两个方向可以选择:
升级Django版本到2.x及以上
这是最推荐的方案,既然你已经验证过Django 2.x能和djongo正常配合,升级后不仅能解决兼容性问题,还能获得Django新版本的功能更新和安全补丁(注意Django 1.11早已停止官方维护,存在安全风险)。安装兼容Django 1.11的旧版djongo
如果你因业务限制无法升级Django,可以尝试查找并安装djongo的旧版本,这些版本在开发时适配了Django 1.11。你可以通过以下步骤操作:- 先查询djongo的历史版本列表,找到明确标注支持Django 1.11的版本号
- 使用pip指定版本安装,比如:
pip install djongo==<兼容的旧版本号>
不过需要注意:旧版djongo可能已经停止维护,后续可能会遇到功能缺失或安全漏洞问题,需要谨慎评估。
你遇到的报错日志
from djongo import models File "/usr/local/lib/python3.6/dist-packages/djongo/models/__init__.py", line 3, in <module> from .fields import ( File "/usr/local/lib/python3.6/dist-packages/djongo/models/fields.py", line 28, in <module> from django.db.models.fields.mixins import FieldCacheMixin ModuleNotFoundError: No module named 'django.db.models.fields.mixins'
内容的提问来源于stack exchange,提问作者Ayush Kothari
相关产品推荐
相关产品推荐

