首先下载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中也是如此:
安装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集合吗?
先不管这些,接着往下补充界面,看一看:
先试验一下是不是能够编写出可以实现一定功能的小页面,然后逐步完善:
但是有一个问题!!!我的项目目录下根本就没有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.
只好再看看。
我把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
Copyright © 2015-2022 南方创投网版权所有 备案号:粤ICP备18023326号-21 联系邮箱:855 729 8@qq.com