Django 2.0和3.0集成MongoDB

众所周知,Django内置支持关系型数据库很好,而对于NoSQL中很流行的Mongo缺省是不支持的,网上关于这部分的实践文章,大多以django-mongoengine这个第三方模块为例。但我通过这些文章来读取mongodb时,均不能实现,经查,是因为这些文章大部分是django1.0时代的产物。

查阅官网http://mongoengine.org/来到官方文档:

http://docs.mongoengine.org/django.html

找到Django支持部分,看到如下的提示:

Django support has been split from the main MongoEngine repository. The legacy Django extension may be found bundled with the 0.9 release of MongoEngine.

大意就是MongoEngine对Django的支持已经单独剥离,于是又找到了Git

https://github.com/xuys50/django-mongoengine

这就是支持Django2.0和3.0的MongoEngine了,有详细的说明,也附了例子在example app中。通过以下命令可以跑在测试环境中(需要提前设置好mongodb)

conda activate mongo_test        #这里我用的是conda,读者可启用自己的虚拟环境

django-admin version                #我用的是django3.17版本

3.1.7

pip install .

pip install -r example/tumblelog/requirements.txt

cd django-mongoengine/example/tumblelog

python manage.py runserver  0:8888        

#这里要注意自己的server上防火墙启用了8888端口,并在Django中的settings.py中设置了允许所有IP可访问

[root@VM-0-17-centos tumblelog]# more tumblelog/settings.py | grep ALLOW

ALLOWED_HOSTS = '*'

启动django结果如下:

(mongo_test) [root@VM-0-17-centos tumblelog]# python manage.py runserver  0:8888

Watching for file changes with StatReloader

Performing system checks...

System check identified no issues (0 silenced).

March 01, 2021 - 10:42:02

Django version 3.1.7, using settings 'tumblelog.settings'

Starting development server at http://0:8888/

Quit the server with CONTROL-C.

查看前端页面:

点击右上角create--POST可发表文章:


检查mongodb中的collections如下:

> use django_mongoengine

switched to db django_mongoengine

> show tables

django_session

post

user

到此验证了django3.1下的mongodb实现。

接下来我将在自己的项目中使用它,并将过程记录在这里!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容