python-django-04
python-django-04
1 1、模板
2 1、变量(略)
3 2、标签(略)
4 3、过滤器(略)
5 4、静态文件(略)
6 5、模板的继承
7 1、什么是模板的继承
8 当多个模板(网页)具备大部分相同的内容时,就可以使用继承的方式,将相同的内容继承过来,再增加/修改属于自己的内容即可
9 2、模板继承的语法
10 1、在父模板中
11 增加{%block 名称%}...{%endblock%}标签
12 2、在子模板中
13 1、在最顶层第一句话增加 :
14 {%extends '父模板的名称'%}
15 2、增加 block 标记,编写属于自己的内容
16 {%block 名称%}
17 属于子模板中自己的内容
18 {%endblock%}
19 2、模型 - Models
20 1、什么是模型
21 模型,就是根据数据库中数据表的结构而创建出来的class。数据库中的每一张表到编程语言中就是一个class。数据库表中的一个字段(列)可以被构建成class中的一个成员变量(属性)。并且在模型中,完成对数据的CRUD操作
22 C:Create
23 R:Retrieve
24 U:Update
25 D:Delete
26 2、创建 和 使用模型 - ORM
27 1、什么是ORM
28 ORM:Object Relational Mapping
29 简称:ORM,O/RM,O/R Mapping
30 中文为:对象关系映射
31 三大特征:
32 1、数据表 到 类(class) 的映射
33 允许将表自动生成 一个类
34 也允许将一个类自动生成一个表
35 2、数据类型的映射
36 允许将表中字段的类型自动生成到编程语言中对应的数据类型
37 也允许将编程语言中的数据类型生成数据库中对应的字段类型
38 3、关系映射
39 数据库中表的关联关系:
40 一对一,一对多(多对一),多对多
41
42 将表中的关联关系也映射到编程语言的class中,通过创建对象的关系来完成映射
43 2、ORM的优点
44 1、提高了开发效率,能够自动完成实体类到数据表的映射,可以省略庞大的数据访问层
45 2、不用SQL编码,就能完成对数据的CRUD操作
46 3、创建 和 配置数据库
47 1、创建数据库(支持中文)
48 create database webdb default charset utf8 collate utf8_general_ci
49 2、Django中数据库的配置
50 settings.py 中配置数据库的信息
51 DATABASES = {
52 'default':{
53 'ENGINE':'...',
54 'NAME':'',
55 }
56 }
57
58 1、ENGINE :引擎
59 django.db.backends.mysql
60 2、NAME:要连接到的数据库的名称
61 3、USER:用户名称,通常为 root
62 4、PASSWORD:密码,123456
63 5、HOST:连接的主机,本机的话 localhost / 127.0.0.1 / 不写
64 6、PORT:端口,3306
65 4、数据库的同步操作
66 1、./manage.py makemigrations
67 作用:将每个应用下的models.py文件映射成一个数据库日志文件,并存放在 migrations 文件夹中
68 2、./manage.py migrate
69 作用:将每个应用下的migrations文件夹中的日志文件同步到 数据库中
70 5、编写Models
71 1、注意
72 1、Models中的每个class都称之为 模型类(Model) 或 实体类(Entry)
73 2、Models中的每个实体类,必须继承自models.Model
74 2、ex
75 models.py
76
77 from django.db import models
78 class Publisher(models.Model):
79 name = models.CharField(max_length=30)
80 address = models.CharField(max_length=50)
81 city = models.CharFiled(max_length=20)
82 country = models.CharField(max_length=20)
83 website = models.URLField()
84 6、Django提供的数据字段 以及 字段选项
85 1、数据字段(Field Types)
86 1、BooleanField()
87 2、CharField()
88 3、DateField()
89 4、DateTimeField()
90 5、FloatField()
91 6、FileField()
92 7、EmailField()
93 8、IntegerField()
94 9、ImageField()
95 10、URLField()
96 11、DecimalField()
97 2、字段选项(Field Options)
98 1、null :是否允许为空
99 name=models.CharField(max_length=30,null=True)
100 2、default :为该列设置默认值
101 name=models.CharField(max_length=30,default='匿名')
102 练习:
103 在 models.py 中追加2个class
104 1、Author - 作者
105 1、name ,
106 2、age ,
107 3、email ,
108 2、Book - 图书
109 1、title
110 2、publication_date
111 7、数据的导入和导出(数据迁移) 以及 版本切换
112 1、版本切换
113 ./manage.py migrate 应用名称 版本号
114 ex:
115 ./manage.py migrate index 0001
116 2、数据库的导出
117 1、mysqldump -u root -p 数据库名 > 文件.sql
118 (导出所有的表结构 以及 数据)
119 2、mysqldump -u root -p -d 数据库名 > 文件.sql
120 (导出所有表结构,不导出数据)
121 3、数据库的导入
122 mysql -u root -p 数据库名 < 文件.sql
123 (要求数据库必须存在)
124 4、通过数据库自动导出Models
125 ./manage.py inspectdb > 文件.py
126
127 作业:
128 1、完善 login.html 和 register.html
129 2、根据 login.html 和 register.html 分析 天天果园项目中 用户表的信息
130 1、创建一个数据库 FruitDay
131 2、创建实体类 - models
132 ... ...
133 增加一个字段 :是否为活动用户
134
135
136
137
138
139
140 实体:
141 数据表中的一行记录,就是一个实体
142 实体完整性:确保每张表中的数据不能有重复的。数据表中的主键,是实现实体完整性的方式之一