0
点赞
收藏
分享

微信扫一扫

巨蟒python全栈开发django9:一些知识点的汇总

回顾上周内容:

题目:

1.人民出版社出版过的所有书籍的名字以及作者的姓名(三种写法,笔记中有两种写法)

2.手机以2开头的作者出版过的所有书籍名称以及出版社名称(三种写法,笔记中有1种写法)

 

1.聚合查询(aggregate)

需求:查找所有书里边的最大价格的那本书

因为,书这张表中没有价格字段.我们需要添加一个这样的字段

巨蟒python全栈开发django9:一些知识点的汇总_html

同步数据库需要的指令,首先,找到,简化的指令

巨蟒python全栈开发django9:一些知识点的汇总_数据_02

运行指令:

巨蟒python全栈开发django9:一些知识点的汇总_数据_03

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_04

上边说明,需要设置一个默认值,所以,我们选择2,退出,在models.py里边添加默认值

这样就回到了,相关的界面

巨蟒python全栈开发django9:一些知识点的汇总_数据_05

 

 设置默认值为10

执行指令:

巨蟒python全栈开发django9:一些知识点的汇总_html_06

巨蟒python全栈开发django9:一些知识点的汇总_数据_07

 

 这时候,表里边就有一个,默认值为10的价格属性字段了

巨蟒python全栈开发django9:一些知识点的汇总_数据_08

修改价格

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_09

查询价格最高的那本书

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_10

巨蟒python全栈开发django9:一些知识点的汇总_html_11

写完命令,点击查询

聚合就是上边最后得到的结果

首先,引入聚合函数

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_12

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_13

 

注意:这里报错的原因是max需要大写Max

巨蟒python全栈开发django9:一些知识点的汇总_数据_14

运行,得到如下结果:

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_15

现在我们再起别名

 

巨蟒python全栈开发django9:一些知识点的汇总_html_16

,将别名进行了修改为,m_p

得到如下结果:

巨蟒python全栈开发django9:一些知识点的汇总_html_17

查一下书籍的总数

巨蟒python全栈开发django9:一些知识点的汇总_数据_18

 

 得到的是4条数据

巨蟒python全栈开发django9:一些知识点的汇总_html_19

利用filter和all进行筛选

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_20

巨蟒python全栈开发django9:一些知识点的汇总_数据_21

如上图,以publish_id分组即可

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_22

 

得到如上结果:

巨蟒python全栈开发django9:一些知识点的汇总_html_23

 出版社的名字是可以拿到的

巨蟒python全栈开发django9:一些知识点的汇总_html_24

 连接字段

巨蟒python全栈开发django9:一些知识点的汇总_数据_25

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_26

分组通过publish的名字

起别名:

巨蟒python全栈开发django9:一些知识点的汇总_数据_27

 

 

2.分组查询

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_28

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_29

 

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_30

 

 

 

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_31

 

得到结果:

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_32

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_33

得到结果:

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_34

巨蟒python全栈开发django9:一些知识点的汇总_数据_35

以and关系进行分组

结果:

巨蟒python全栈开发django9:一些知识点的汇总_html_36

分组之后,再统计结果

巨蟒python全栈开发django9:一些知识点的汇总_html_37

 

 注意下面的book__id,指的是两个横杠

通过下面,我们知道尔康出了两本书

巨蟒python全栈开发django9:一些知识点的汇总_html_38

 

 执行,得到结果:

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_39

 

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_40

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_41

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_42

 

 

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_43

 

巨蟒python全栈开发django9:一些知识点的汇总_html_44

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_45

巨蟒python全栈开发django9:一些知识点的汇总_html_46

 

先联表再进行分组

巨蟒python全栈开发django9:一些知识点的汇总_html_47

 

ORM执行原生sql语句

 

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_48

巨蟒python全栈开发django9:一些知识点的汇总_数据_49

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_50

直接拿取数据

 

巨蟒python全栈开发django9:一些知识点的汇总_html_51

通过原生 的SQL,我们就得到了这样的结果

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_52

 

 

3.F&&Q查询

添加两个属性,点赞数和评论数

巨蟒python全栈开发django9:一些知识点的汇总_数据_53

 

执行,两条命令:

makemigrations

migrate

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_54

得到如下表

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_55

添加数据得到如下所示:

巨蟒python全栈开发django9:一些知识点的汇总_html_56

 

 F&&Q

注意,两个字段之间不能直接比较

巨蟒python全栈开发django9:一些知识点的汇总_html_57

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_58

巨蟒python全栈开发django9:一些知识点的汇总_html_59

集合为空,说明没有大于的

 可以对F进行处理

巨蟒python全栈开发django9:一些知识点的汇总_数据_60

更新,自增12

巨蟒python全栈开发django9:一些知识点的汇总_数据_61

更新之后,

巨蟒python全栈开发django9:一些知识点的汇总_html_62

刷新之后,评论结果加上12

巨蟒python全栈开发django9:一些知识点的汇总_数据_63

 

巨蟒python全栈开发django9:一些知识点的汇总_html_64

巨蟒python全栈开发django9:一些知识点的汇总_数据_65

结果里边没有两个都大于1000的数据

 

Q通过管道符|实现"或者"的意思

巨蟒python全栈开发django9:一些知识点的汇总_数据_66

且的话,我们再写在后边

巨蟒python全栈开发django9:一些知识点的汇总_数据_67

 

巨蟒python全栈开发django9:一些知识点的汇总_html_68

注意一点:Q包裹的放在没有Q包裹的前面

 

4.自定义标签过滤器

自定义过滤器

巨蟒python全栈开发django9:一些知识点的汇总_html_69

 

巨蟒python全栈开发django9:一些知识点的汇总_html_70

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_71

运行:

巨蟒python全栈开发django9:一些知识点的汇总_html_72

下面是自定义标签:

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_73

 

 如何运用到模板语言之中呢?(自定义过滤器)

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_74

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_75

 需要处理的数据,函数,需要替换的参数,在下面的过滤函数中最多接收2个参数,而且这个过滤器和其他过滤器一样,

可以放到if判断,for循环等语句里面来使用

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_76

运行报错,之后的修改:

巨蟒python全栈开发django9:一些知识点的汇总_html_77

巨蟒python全栈开发django9:一些知识点的汇总_html_78

再次,运行,得到结果

巨蟒python全栈开发django9:一些知识点的汇总_html_79

得到的结果如上图

涉及到的文件夹(urls.py  test.html  views.py  templatetags/mytag.py)

过滤器也可以如下图,这样使用

巨蟒python全栈开发django9:一些知识点的汇总_html_80

 

下面是自定义标签:(下面的函数,可以传递任意个参数)

 

巨蟒python全栈开发django9:一些知识点的汇总_html_81

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_82

巨蟒python全栈开发django9:一些知识点的汇总_html_83

巨蟒python全栈开发django9:一些知识点的汇总_数据_84

运行,测试,得到结果:

巨蟒python全栈开发django9:一些知识点的汇总_html_85

 

 注意,这个函数,不可以写在渲染语句里边

巨蟒python全栈开发django9:一些知识点的汇总_数据_86

 

inclusion_tag标签

文件:(result.html  mytag.py    views.py   test.html   result.html   urls.py )

巨蟒python全栈开发django9:一些知识点的汇总_html_87

巨蟒python全栈开发django9:一些知识点的汇总_数据_88

return里边的data就是上边的html里边的data,前端接收后端的

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_89

 

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_90

以组件形式引入上边的标签的方式

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_91

在mytag.py里边的return里边的data通过以字典的形式,传递给result.html,进行渲染

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_92

 

 运行:得到的结果

巨蟒python全栈开发django9:一些知识点的汇总_数据_93

 

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_94

 

5.静态文件配置

一开始引入的是网络地址,bootstrap,如何添加到本地???

需要手动处理,为了防止bootstrap网上的崩溃了,需要写在本地

巨蟒python全栈开发django9:一些知识点的汇总_html_95

巨蟒python全栈开发django9:一些知识点的汇总_html_96

 

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_97

运行,得到结果:

巨蟒python全栈开发django9:一些知识点的汇总_html_98

现在,我们应用bootstrap样式,在jingtai.html文件里边

巨蟒python全栈开发django9:一些知识点的汇总_数据_99

运行,得到结果:

巨蟒python全栈开发django9:一些知识点的汇总_数据_100

万一哪一天,网上的bootstrap崩了,就需要有事情了,我们需要在本地处理

首先,在整个项目上创建jingtaiwenjian文件

将下载到本地的bootstrap,解压之后放到jingtaiwenjian里边

巨蟒python全栈开发django9:一些知识点的汇总_html_101

配置settings.py文件

巨蟒python全栈开发django9:一些知识点的汇总_数据_102

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_103

运行:bootstrap并不起作用,这个和刚才的配置文件有关系

巨蟒python全栈开发django9:一些知识点的汇总_数据_104

正确的写法

 

巨蟒python全栈开发django9:一些知识点的汇总_数据_105

巨蟒python全栈开发django9:一些知识点的汇总_html_106

修改成的static,再次运行,就可以成功修改了.以别名的方式引入

巨蟒python全栈开发django9:一些知识点的汇总_数据_107

如果别名修改成xxx,

巨蟒python全栈开发django9:一些知识点的汇总_html_108

引入的路径,也需要改成xxx

巨蟒python全栈开发django9:一些知识点的汇总_数据_109

下面介绍一种,不需要改的,自动加载的方式:

巨蟒python全栈开发django9:一些知识点的汇总_数据_110

 

 将别名改成"666"试一下

巨蟒python全栈开发django9:一些知识点的汇总_数据_111

巨蟒python全栈开发django9:一些知识点的汇总_数据_112

如上图,依然可以得到上边的结果

巨蟒python全栈开发django9:一些知识点的汇总_html_113

我们将上边的结果,修改成statics,这是习惯性问题.

下面的settings.py也需要进行修改

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_114

在我们上边修改文件夹名字的时候,已经进行自动把这里的jingtaiwenjian修改成了statics

 但是这里,羞不修改貌似,没有太大影响,已经测试过了.

 

6.事务和锁

锁:(遇到之后可以再读一下超哥的笔记)

 锁,指的是,某些数据,在同一时间只能一个人用,尤其指的是数据库中的相关操作,

防止多人同时操作一条数据.

MYISAM支持的表级锁(锁住整个表),MYISAM又分为读锁和写锁是隔离的

INNODB支持的是行级锁(锁住一行)和表级锁

INNODB在更新和删除某条记录的时候是锁住的,其他人是不能查看的和写入

有很多概念.

更新和删除的时候,用的是表级锁

查询的时候是共享锁

巨蟒python全栈开发django9:一些知识点的汇总_数据_115

事务的四大特性:原子性,持久性,唯一性,隔离性

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_116

巨蟒python全栈开发django9:一些知识点的汇总_数据_117

上边的代码一直报错:

原因如下图:

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_118

 

 运行:anyway.py,得到结果(报错)

 

巨蟒python全栈开发django9:一些知识点的汇总_bootstrap_119

我们再看一下,多了一条数据

巨蟒python全栈开发django9:一些知识点的汇总_html_120

运行成功,运行anyway.py出错的原因是因为属性不对应和publish表.

 

复习:

巨蟒python全栈开发django9:一些知识点的汇总_数据_121

 

 连表,分组,找数据(三步走)

 

#按照部门分组查询名字和id的数量
# select name,count(id) from emp group by dep;
# ret = models.Emp.objects.value('dep').annotate(c=Count('id'))
# print(ret)
#查询每一个部门以及对应的员工数
# select dep.name,count(emp.id) from dep inner join emp on dep.id=emp.dep_id
# group by dep.name,dep.id;
# models.Dep.objects.values('id','name').annotate(c=Count('emp__id'))
#查询每一个部门以及对应的员工数以及ID
# select dep.id,dep.name,count(emp.id) as c from dep inner join emp on dep.id=emp.dep_id
# group by dep.id,dep.name;
#
# models.Dep.objects.annotate(c=Count('emp__id')).values('name','c')
#
# select dep.name,count(emp.id) as c from dep inner join emp on dep.id=emp.dep_id group by dep.id;

 

 mark_safe补充

 

巨蟒python全栈开发django9:一些知识点的汇总_html_122

 

在test.html里边调用

巨蟒python全栈开发django9:一些知识点的汇总_html_123

 

 运行结果:

巨蟒python全栈开发django9:一些知识点的汇总_html_124

没有变成,修改如下标签

巨蟒python全栈开发django9:一些知识点的汇总_数据_125

巨蟒python全栈开发django9:一些知识点的汇总_html_126

这样就修改成功了

 



举报

相关推荐

0 条评论