第01号笔记最终成果图:
当前笔记所完成的网站的功能简介: 1 网页从数据库获得图书名称 2 点击新增按钮后增加一本书,当前名为“流星蝴蝶剑” 3 点击新增后当前页面url地址不变
该图书管理网站以下简称“网站”,网站主要功能有: 1:显示所含图书书名,显示每个图书出版日期,浏览量,评论量。 2:点击图书名可进入图书详情页:显示书内主要角色信息(姓名,性别,备注(也就是小说人物的招牌招式技能等))
项目制作环境: Windows10 企业版 python3.7 Mysql5.7.28 Django库 Pycharm
1.设计BookInfo,增加属性bread和bcomment,另外设置软删除标记属性isDelete。
在图片所示的test2/booktest/models.py文件中添加如下代码(设置图书、英雄模型类)
添加图书模型类↓
from django.db import models # 一类 对应下面多类 class BookInfo(models.Model): '''图书模型类''' #图书名称 btitle = models.CharField(max_length=20) #字符串类型 #出版日期 bpub_data = models.DateField() #日期类型 #阅读量 bread = models.IntegerField(default = 0) #整数类型,default是默认值 #评论量 bcomment = models.IntegerField(default = 0) #整数类型,default是默认值 # 删除标记 isDelete = models.BooleanField(default = False)2.设计HeroInfo类型,增加软删除标记属性isDelete。 软删除标记:删除数据时不做真正的删除,而是把标记数据设置为1表示删除,目的是防止重要的数据丢失。
添加书中英雄模型类↓
class HeroInfo(models.Model): '''英雄模型类''' # 英雄名 hname = models.CharField(max_length = 20) # 性别 hgender = models.BooleanField(default = False) #默认代表男 # 备注(技能,绝学) hcomment = models.CharField(max_length = 200) # 关联属性--用来关联 其属于某一类 hbook = models.ForeignKey(BookInfo) # 删除标记 isDelete = models.BooleanField(default=False)此时创建完两个类后要执行迁移文件。 操作:ctrl+R 输入cmd掉出命令行,切换到当前项目根文件(D:\pyStudy\djpro1\test2)中,输入python manage.py makemigrations按回车显示如下图: ●可见成功生成迁移文件<0001_initial.py>。 ●此时可见migrations文件夹下也多了一个文件<0001_initial.py>。 此时迁移文件生成完毕
此时另外启动一个cmd调到当前文件夹下,输入mysql -u root -p —>输入密码 ----> 输入show databases; ---->输入 use bj18;(此时的bj18是需要提前设置好的数据库) ---->输入show tables;检查的当前连接数据库的模板(如下图):
此时再在cmd中输入:desc booktest_bookinfo; 来查看booktest目录下bookinfo的结构(如下图) 同样操作检查booktest下heroinfo结构(如下图): 但是此时数据库是空的,就需要添加一些数据。
以下数据是博主已经编辑好的,复制到打开数据库的cmd中就可以直接添加。
insert into booktest_bookinfo(btitle,bpub_data,bread,bcomment,isDelete) values (‘射雕英雄传’,‘1980-5-1’,12,34,0), (‘天龙八部’,‘1986-7-24’,36,40,0), (‘笑傲江湖’,‘1995-12-24’,20,80,0), (‘雪山飞狐’,‘1987-11-11’,58,24,0); insert into booktest_heroinfo(hname,hgender,hbook_id,hcomment,isDelete) values (‘郭靖’,1,1,‘降龙十八掌’,0), (‘黄蓉’,0,1,‘打狗棍法’,0), (‘黄药师’,1,1,‘弹指神通’,0), (‘欧阳锋’,1,1,‘蛤蟆功’,0), (‘梅超风’,0,1,‘九阴白骨爪’,0), (‘乔峰’,1,2,‘降龙十八掌’,0), (‘段誉’,1,2,‘六脉神剑’,0), (‘王语嫣’,0,2,‘神仙姐姐’,0), (‘令狐冲’,1,3,‘独孤九剑’,0), (‘任盈盈’,0,3,‘弹琴’,0), (‘东方不败’,0,3,‘葵花宝典’,0), (‘胡斐’,1,4,‘胡家刀法’,0), (‘苗若兰’,0,4,‘黄衣’,0), (‘程灵素’,0,4,‘医术’,0), (‘袁紫衣’,0,4,‘六合拳’,0);
如图可见已经保存成功↓ 此时在负责数据库的cmd中输入select * from booktest_bookinfo; 查看此时数据库内的图书信息。同理,输入select * from booktest_heroinfo; 查看此时数据库内的英雄信息添加数据完成后,就可以执行启动服务器了,在cmd中输入 python manage.py runserver 回车 接下来需要编辑url了
点击“新增”按钮后显示所以此时需要构建视图:
打开test2/booktest/migrations/views.py输入如下代码:
def create(request): '''新增一本图书''' # 1.创建BookInfo对象 b = BookInfo() b.btitle = '流星蝴蝶剑' b.bpub_data = date(1990,1,1) # 2.保存到数据库里 b.save() # 3.返回应答,让浏览器在访问/index,重定向 return HttpResponse('ok')然后点开同级目录下的urls.py文件并输入
url(r'^create$', views.create) #新增一本图书此时再进入网页http://127.0.0.1:8000/create可看到运行成功
重定向(Redirect):就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。
打开views.py文件,导入django.http包中的HttpResponseRedrect模块,然后在create方法中修改返回值(如下图)
该操作的目的可以称之为页面重定向 也就是使服务器不返回页面,而是告诉浏览器再去申请其他的url地址。
然后返回网页,多次点击“新增”页面后可发现链接仍然是"http://127.0.0.1:8000/index"