首页 > 要闻 >

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

上一篇:

魔法学院的特工教授 第十四章 源码(1) 全球新动态

下一篇:

最后一页

x
推荐阅读

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

魔法学院的特工教授 第十四章 源码(1) 全球新动态

海南:东方龙眼远销海外

焦点精选!电影《长空之王》连续2天单日票房破亿

俄专家:西方银行业危机或加速“去美元化”进程

环球微动态丨我的位置附近宾馆酒店_我的位置

最正宗的人工智能数据安全龙头20家:(美亚柏科、三六零、奇安领衔!)

环球快播:中国正规保险公司名单在哪里查?怎么选比较好?

广州哪个区繁华排名_广州哪个区比较繁华

今日热议:民风民俗有哪些_中国民风民俗有哪些

手机号实名信息怎么查询_怎样查询手机号是否实名

观焦点:《战争传说》主线任务逃避审判怎么过?逃避审判攻略

文明招远 健康招远 走起!|全球今头条

图片报:组织方无法履行500万欧的收入承诺,拜仁取消5月底澳洲行

每日时讯!飘在天上的日子感触_飘在天上的日子

前4月房企晒业绩,又一家央企冲进TOP3

全球快看点丨安信证券:血制品年初至今批签发稳健增长 期待疫后常规需求持续回暖

苦苦支撑!小萨博尼斯16中10高效得22分8板7助2帽|环球最新

天天视讯!王者荣耀战令几周结束_王者荣耀战令

孙兴慜最近11个赛季10个赛季联赛进球上双

“我记住了你的样子” 全球今亮点

讨论稿的范文及格式怎么写_讨论稿的范文及格式

全球快资讯丨到寺院有这种感觉, 说明你很有善根

湖北来凤:2023湘鄂龙凤双城马拉松开跑

工伤流程及赔偿_工伤流程 简讯

曲中有真意:元明清散曲里的美丽情感_对于曲中有真意:元明清散曲里的美丽情感简单介绍_环球今日报

全球关注:为吸引流量推出“99元睡大厅沙发”项目,台州一酒店被立案调查

天天亮点!怎样画动物素描图片_怎样画动物素描

漫步太平山,感受生态美-世界微速讯

世界实时:这个假期,来嘉博“品读”一封封来自远古的“书信”

环球热推荐:虾米音乐娱乐出品、大麦主办 2023韩红“咏生”演唱会在北京成功举办

全球微头条丨本赛季英超第37轮部分比赛的开球时间有调整

【世界热闻】曙猿猴_对于曙猿猴简单介绍

今日热门!苏丹媒体:苏丹北部尼罗河州宣布进入紧急状态

「坐着高铁看贵州·车窗外的风景」“粤资投黔”增添新动能

泰和县气象台发布大雾黄色预警信号【III级/较重】【2023-04-30】_世界时快讯

环球报道:中国银行与广东省人民政府签署金融助推广东高质量发展全面战略合作协议

暹岗社区_对于暹岗社区简单介绍

全球通讯!实诚日照交通人:危急时刻施援手 紧急救助暖人心

有校霸的韩剧_有校网登录

当前速递!苹果妹_关于苹果妹的简介

【当前独家】胜灰小说_50层灰小说中文完整版

线上逐渐成为创业主流?实体如何转线上?不妨试试抖音小店 全球新要闻

三只蝴蝶故事内容_三只蝴蝶故事

热点聚焦:指令标志大全_指令标志

P社宣布《城市:天际线》最终资料片“酒店和度假村”5月23日发布

上海车展,国产电车令人忧心的四个事实与真相|天天热资讯

今日热闻!暴走僵尸_对于暴走僵尸简单介绍

假日观察丨玩转乡村 “民宿+”更时尚 天天观焦点

助力假日消费 工行升级旅行类信用卡服务