前言:
项目要求django用mongodb作为后端库,看了网上的经验分享,在这里也记录一下自己的实际经验。
django的官方文档中没有明文支持noSQL,之前试着用了djongo,发现配置中偶尔会有版本冲突的问题,但是项目催得急所以打算直接用mongoengine(个人比较熟悉),有兴趣的读者也可以参考一下djongo的官方文档。
(2024年3月9日14:21:32更新:
本来想找组里的接口文档,结果发现没有共享,只能自己先研究研究,据说Django REST framework可以将mongdb的数据暴露为api,打算试试,毕竟不能统一用django作为框架调用api还是比较麻烦的。以下内容仅供测试连接使用,请不要直接用在开发环境中!)
正文:
只需要注意两个地方:settings.py和应用中的models.py
1.settings.py:
默认的DATABASES直接注释掉即可,不需要注册应用,不需要添加所谓的MONGODB_DATABASES或者其他的导包操作(使用别名的注意顶格导入即可)
2.models.py中构建模型测试:
from mongoengine import *
connect(db='mongodbForDjango', host='localhost', port=27017)
class MyTestDB(Document):
"""
这里是为了进行测试而设置的简单模型
"""
field1 = StringField(max_length=100, required=True)
field2 = IntField(null=True)
field3 = ListField(StringField())
# 这里主要是选集合
meta = {
'collection': 'temp',
}
# 调用方法创建一个实例
test = MyTestDB(
field1="anything",
field3=["item1", "item2", "item3", ],
field2=42
)
test.save()
(可以替换成任意的测试模型)
如果希望在应用初始化的时候就直接连接上数据库的话,可以直接在应用对应的__init__.py中添加连接数据库的字段:
from mongoengine import connect
connect(db='mongodbForDjango', host='localhost', port=27017)
(django version 4.2.11 mongoengine version 0.28.1)