首页 >> 要闻 >

Django项目连接MongoDB(一)(小试牛刀)

2023-05-02 03:52:00 来源:哔哩哔哩

一、利用navicat 可视化MongoDB数据库,先进行基本操作试验一下

首先下载navicat for mongoDB,正好有14天的试用期,到我答辩结束够用了。

有了它,可以可视化观察MongoDB里面的数据。(navicat有破解版,但是好麻烦,而且电脑一直在给我提示,所以还是正版试用期内尽快使用为妙。MongoDB以前做过相关的实验,所以电脑里有直接下载过的。)打开navicat for mongoDB,直接就可以看到里面有哪些数据库了。

我在命令行窗口(终端)使用mongo命令,进入mongoDB的shell编辑模式


【资料图】

然后use book_system,就可以直接创建一个book_system的数据库,show dbs,可以显示有哪些数据库:

db显示当前数据库名。

show tables或show collections可以显示当前内有哪些集合。一开始里面什么也没有,所以无论是用show tables还是show collections,之后直接到输入下一命令的部分,没有什么显示,后来使用db.createCollection("runob"),创建了一个runoob集合,再去show tables的时候,显示有runoob。

这是,利用navicat直观看数据库内容是这样的:

然后使用db.runoob.drop(),可以删除集合runoob:

可以看到,再去显示时,book_system里面已经没有集合了,navicat中也是如此:

二、连接mongoDB与django项目:

安装mongoengine(终端):

在pycharm中配置连接MongoDB数据库:

编辑settings.py:

需要指定一个数据库的名称,就用刚刚测试的book_system:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

},

# 默认的sqlite3 不用删除

'mongodb':{

# book_system 是MongoDB数据库的名字

'NAME':'book_system'

}

}

编辑models.py文件

原来我还没有这个文件,在网上的指导下,在pycharm的终端terminal下输入

python manage.py startapp blog    然后运行,

就出现了一个blog文件夹,里面就有models.py:

然后输入:

import mongoengine

from mytest.settings import DATABASES   #(因为我的项目叫做mytest,mytest.settings就是上面提到的那个# settings文件,所以在后面NAME 也能自动映射为 settings.py 中的数据库名,借鉴别的网页差点弄错hh)

from datetime import datetime

# 使用connect()方法链接MongoDB

# NAME 会自动映射为 settings.py 中的数据库名

mongoengine.connect(DATABASES['mongodb']['NAME'])

# Create your models here.

# 此处继承的是 mongoengine.Document

class book(mongoengine.Document):

isbn = mongoengine.StringField()  # 编号

name = mongoengine.StringField()  # 书名

author = mongoengine.StringField()  # 作者

press = mongoengine.StringField()  # 出版社

date = mongoengine.DateTimeField(default=datetime.now(), required=True)  # 出版时间

kind = mongoengine.StringField()  # 分类

book 是 models.py 中设置的类名,默认使用类名作为MongoDB中的集合名

ok,让我们看一下结果:

通过navicat看一下book_system数据库里面有没有添加一个名叫book的集合:

看了一下,好像并没有,感觉它在骗我,或者?难道?我应该现在book_system内先创建一个book集合吗?

先不管这些,接着往下补充界面,看一看:

三、硬着头皮往下做,借鉴网址((13条消息) 在线图书信息入库程序开发(二)_在控制台中输入以下命令创建应用 home:_粉尘伴终生的博客-CSDN博客:https://blog.csdn.net/weixin_45116412/article/details/107012770)

先试验一下是不是能够编写出可以实现一定功能的小页面,然后逐步完善:

但是有一个问题!!!我的项目目录下根本就没有templates,所以我需要自己去添加。

首先,看一下我的settings文件:

里面的'DIRS':[ ],将它修改一下,我感觉[ ] 内填 os.path.join(BASE_DIR,"templates")或者BASE_DIR / 'templates'都可以,但是为了和我settings中这一段的 BASE_DIR / 'db.sqlite3'一致,我决定用后面这种方式。(大不了不行,再用第一种试一试)

同时我并没有templates这个目录,所以我应该考虑新建一下。

观察之前参考链接给出的目录图:

所以这个templates应该是与我的blog目录平级的,在pycharm里面新建一个目录templates,然后试一下上面的那些代码:

不小心,创建的是文件,不是目录(/羞),应该是dictionary,错了,再来:

一会儿按照之前链接里的内容进行填充

我看cadetblue和endblock下面都有下划线,觉得可能一个是没有那种蓝,直接改为blue,还有一个就是也许endblock应该写为end block,之前的博主可能连写了,或者编程规则有所改变,总而言之,按照我心中的想法改过以后,下划线没有了:

再来编辑一下list.html(胜利在前方呀,很期待一会儿到底能不能运行,这个我也是第一次做呀,欸,毕设,现学现卖hhh2023.5.1  23:03;不过我得先去洗个澡,一会儿接着写)

(2023.5.2  0:14,我胡汉三又回来啦!接着写)

修改好list.html后,再按照原链接中说的添加访问路由。它是打开book目录,但是我的项目名称为mytest,所以,我应该是打开mytest目录中的urls.py文件。

在urls.py中,大段注释应该使用三个双引号。

另外,原链接中的from home.views import * ,在我这儿,应该使用 from blog.views import * 。当初为了有models.py文件,在网上的指导下,使用的是python manage.py startapp blog

(“在pycharm的终端terminal下输入python manage.py startapp blog    然后运行”,详情见第二部分)

按照参考链接有所改变后,编译器报了两个错误,一个在edit、一个在delete上,点击,具体看一看。

我仔细看了看templates里面两个界面的代码,这应该是原链接作者的问题,首先是这块:

截图第34行中,delete它写开了,写成了de lete。

我在自己的list.html内更正后,再返回urls.py,发现红色的小灯泡还在,再去看blog目录下的views.py文件,发现里面有新增数据的函数,但是没有删除数据的函数

在下面添上这两句:

然后再返回urls.py,delete上面的错误消失了:

在views.py中把edit的函数也加上:

并且,path('create',create),写成path('create', create);path('delete',delete)写成path('delete', delete)后(逗号与后面单词空一格),再去看urls.py看警告也消失了。

不过,在这里,还有一个问题就是:creat、delete在list.html中都曾有href等于...

但是edit并没有,urls.py文件是否有警告与views中该函数是否定义有关,但是不知道,在html文件中没有相关的跳转,是否会影响其功能,可以在之后的实践中再看。

按照链接一步一步终于做到了后面,激动人心的运行时刻到了!

在控制台输入:python manage.py runserver   来运行项目,

之后再打开浏览器输入 localhost:8000,或者 http://127.0.0.1:8000/ ,看一下界面如何:

报错—— ImproperlyConfigured: You must define a 'default' database.

只好再看看。

四、心累的Debug

我把NAME改成了book_system,没想到竟然还报错了,又改回来,再debug了一下:

但是一开始就是这样,终端输出也报错了。

试着根据另一个链接 (13条消息) Django 通过 mongoengine 连接 MongoDB 进而使用orm进行CRUD_django 连接mongoengine_lowman2的博客-CSDN博客:https://blog.csdn.net/lowman2/article/details/89010600  修改了一下settings和models文件:

我没终止终端命令,结果终端自己变成这样:

原来 http://127.0.0.1:8000/ 网页打不开,现在是这样的:

终端有出现了粉红色的字体:

去看一看我的settings文件里面是不是少了逗号:

原来我连静态文件路径都没有,给它添上:

在前面添一行import os

控制台的输出真是实时的,这时,我们再看http://127.0.0.1:8000/网页情况:

我们在pycharm的终端再输入python manage.py runserver  运行一下:

但是后面又出现了:

我在mongodb的book_system数据库里创建一个book集合,再看看。

还是不行,想了想,有可能和我之前settings内更改的host有关。我自己本地的localhost,不一定是别人链接上的:192.168.3.69,改成localhost再试试。

这次应该是改对了,因为报的错都变了。

不过这个应该是在list.html里,当时我嫌它有下划线,就将endfor分开了,这回合上再试试:

endblock也得给它合上,都合上后:

大哭,终于成功了!可是还有很多细节我还没尝试,但是熬不动了,太冷了,肚子不舒服,有几个小地方,我也偷偷地加了空格,可能暂时没影响到,不过这个界面(买家秀)和卖家秀好像还是有些不太一样耶~

参考链接是这样的:

可能是我的 html 文件不够全面,或者做了些改动。

但是,点击新增图书这个按钮,还是有问题:

并且,点击搜索框,也还是没有反应。

但是我要刷牙睡了!肚子有点难受,冻得。

但是,这也是一个很大的进步了,至少大致熟悉了django项目的各个文件里面,大概有什么,主要是为了实现什么功能。

之后起床主要做的是:

①先总结下各文件功能,然后大致使用哪些代码,结构。

②尝试使用向数据库里添加数据,确保建立稳定的联系。

③找出添加链接跳转不成功的原因

我以一位旁观者的口吻来说一句:祝你好运!

(啊啊啊~这玩意儿我也是新学啊!)

(PS:哦,对了,后面我把静态路由文件的那几行代码又删了;明天再复现一下。)

主要参考链接:

[1](13条消息) 在线图书信息入库程序开发(二)_在控制台中输入以下命令创建应用 home:_粉尘伴终生的博客-CSDN博客:

https://blog.csdn.net/weixin_45116412/article/details/107012770

[2](13条消息) Django 通过 mongoengine 连接 MongoDB 进而使用orm进行CRUD_django 连接mongoengine_lowman2的博客-CSDN博客:

https://blog.csdn.net/lowman2/article/details/89010600

标签:
x 广告
x 广告

Copyright ©  2015-2022 南方创投网版权所有  备案号:粤ICP备18023326号-21   联系邮箱:855 729 8@qq.com

返回顶部