一、安装与配置
djongo的项目官方地址为:https://nesdis.github.io/djongo/,我们可以通过pip命令直接安装djongo:
pip install djongo
在安装完成之后,我们就可以直接在django中配置mongodb数据库的信息了。
在正常情况下,我们的django项目中数据库在settings.py文件中进行配置,其一般配置如下所示:
1
2
3
4
5
6
|
databases = {
'default' : {
'engine' : 'django.db.backends.sqlite3' ,
'name' : os.path. join (base_dir, 'db.sqlite3' ),
}
}
|
而我们使用djongo的话,变化也不大,如下所示:
1
2
3
4
5
6
|
databases = {
'default' : {
'engine' : 'djongo' ,
'name' : 'mongodb数据库的名称' ,
}
}
|
可以发现,这与django原始的数据库配置方法是一模一样的,所不同的是,数据库的引擎使用了djongo而非django官方提供的数据库封装引擎。
我们用一个新的django项目来演示一下djongo的使用。
首先创建django项目和应用:
然后修改项目的settings.py文件,填写mongodb数据库的配置信息,djongo提供了如下参数供我们设置数据库的信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
databases = {
'default' : {
'engine' : 'djongo' ,
'enforce_schema' : true ,
'name' : 'your-db-name' ,
'host' : 'host-name or ip address' ,
'port' : port_number,
'user' : 'db-username' ,
'password' : 'password' ,
'auth_source' : 'db-name' ,
'auth_mechanism' : 'scram-sha-1' ,
'replicaset' : 'replicaset' ,
'ssl' : 'ssl' ,
'ssl_certfile' : 'ssl_certfile' ,
'ssl_ca_certs' : 'ssl_ca_certs' ,
'read_preference' : 'read_preference'
}
}
|
我们的数据库是本地的数据库,所以只需要设置一部分信息即可,其如下所示:
1
2
3
4
5
6
7
8
9
|
databases = {
'default' : {
'engine' : 'djongo' ,
'enforce_schema' : true ,
'name' : 'djongo_example' ,
'host' : '127.0.0.1' ,
'port' : 27017,
}
}
|
这样,mongodb在django中的 配置就完成了,我们下面可以定义一些模型。
二、定义模型
djongo的一大特点是可以无缝地衔接django的orm语法,包括模型定义的语法和模型操作的语法。现在,我们就为django项目定义一些模型。
在默认情况下,django应用的模型在其目录下的models.py文件中定义。models.py文件初始化状态下只有如下一行代码:
1
|
from django.db import models
|
这是django数据库封装的模型类,我们需要将其修改为djongo提供的模型类,如下所示:
1
|
from djongo import models
|
然后,就可以按照django的方式来定义模型了。在这里,我们定义了一个news()模型,用于存储新闻:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class news(models.model):
title = models.charfield(verbose_name= "标题" ,max_length=50)
author = models.charfield(verbose_name= "作者" ,max_length=10)
desc = models.charfield(verbose_name= "简介" ,max_length=100)
content = models.textfield(verbose_name= "正文" )
create_time = models.datetimefield(auto_now_add= true )
update_time = models.datetimefield(auto_now= true ,auto_now_add= true )
def __str__(self):
return self.title
class meta:
verbose_name = '新闻'
verbose_name_plural = verbose_name
|
三、生成模型
定义好模型之后,继续按照django模型的使用方式,生成数据库迁移,并执行迁移:
1
2
|
python manage.py makemigrations app&
python manage.py migrate
|
命令的执行信息如下所示:
和使用sql数据库一样,django为新项目创建了我们定义的模型还有一些认证管理相关的表,这是否是真的呢,我们去mongodb数据库里面查看一下:
mongodb数据库里面果然生成了一系列的数据表。
四、访问django admin
经过上面的演示,我们可以发现借助于djongo模块,我们可以无痛地以django orm的方式来使用mongodb数据库。那么作为django重量级的admin后台功能,是否能够支持呢?我们继续下面的演示。
首先,继续在命令行中创建一个超级用户:
1
|
python manage.py createsuperuser
|
其过程与使用其他sql数据库无异:
接着,我们将刚刚创建的news()模型添加到admin中,在admin.py中进行设置:
1
2
|
from app.models import news
admin.site.register(news)
|
随后,运行测试服务器:
五、操作数据
除此之外,我们最关心的还是对数据操纵是否方便。我们先在后台界面尝试一下新增数据:
显示新增成功了,我们去mongodb里面看看是否存在:
六、最后
经过上面初步的演示在django中借助djongo模块来使用mongodb,可以发现其还是很方便的,优点在于其改动微乎其微,兼容性特别强。推荐大家在测试环境下充分地进行测试使用,如果没有问题,那么可以谨慎在生产环境中进行部署。更多的使用方法和问题,大家可以访问djongo项目官网:https://nesdis.github.io/djongo/ 和它的GitHub项目地址:https://github.com/nesdis/djongo/
以上就是使用djongo模块在django中使用mongodb数据库的详细内容,更多关于在django中使用mongodb数据库的资料请关注服务器之家其它相关文章!
原文链接:https://zmister.com/archives/1389.html