应用下的模板
在应用目录下创建templates目录
在主路由的项目下中的settings将TEMPLATE项中的APP_DIRS变量改为True即可
默认就为True
但是访问的顺序是要控制的框架先去访问外层项目中的templates,如果在其中找不到对应同名的模板,就去内层应用的templates中去寻找,在内层寻找的顺序是根据settings中的
INSTALLED_APP
中创建应用的先后顺序来的,如果两个应用中含有同名的模板,则会返回第一个创建的应用中的模板
例如,如果在music,sport,learn中的模板文件夹中创建了三个相同文件名称的html文件,则会优先返回music中的哪一个模板
如果想改变这种匹配机制,可以在应用中的templates文件夹中创建一个子文件夹,将对应的模板放到其中,在对应的函数中引用响应的相对地址就可以了
模型层及ORM介绍
要将django连接一个数据库。
首先要安装一个与django有接口python包,
每一个数据库和django有不同的应用包。
这里我们使用mysql数据库,其中有个包叫做mysqlclient,window直接在pycharm中pip就可以了。
然后进人myql创建一个数据库
注意要加上default charset utf8,因为后期要放入汉字进去
然后要到对应的django项目中的settings文件中更爱对应的数据库变量
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
默认为上面的字段,
将其进行改变
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',# 要将sqlite3改为mysql
'NAME': 'Day_02', # 数据库的名称
'USER': 'root', # 管理员的名称
'PASSWORD': 'root',# 管理员密码
'HOST': '127.0.0.1',# 主机地址
'PORT': '3306'# 端口号,一般为默认值
}
}
什么是模型
模型是一个Python的类,由django.db.models.Model派生出来的一个子类
一个模型类代表一个数据库的一张表
模型类中的每一个属性代表表中的字段
模型是数据的接口,是表示和数据操作的方法和方式
什么是ORM
ORM是对象关系的映射,它是一种程序技术,他允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库
作用
建立模型类和表之间的对应关系,允许我通过面向对象的方式来操作数据库
根据设计的模型来生成数据库中的表格
通过简单的配置就可以进行数据库的切换
ORM框架和数据库之间的映射关系
模型实例
创建一个bookstore_book数据表来存储图书馆中的图书信息
1.添加一个bookstore的应用
2.添加模型并注册应用
模型的代码,写到应用下的models.py文件下
from django.db import models
# Create your models here.
class Book(models.Model):
title = models.CharField('书名',max_length=50,default='') # 创建书名属性,最大长度为50,类型为char型,对应数据库中的一张表
price = models.DecimalField('价格',max_digits=7,decimal_places=2,default='')# 创建价格属性,精度为7位,小数两位,类型为价格类型
想更新数据到数据库,要进行数据库的迁移
3.数据库的迁移
迁移数django同步在Python中对模型所作出的更改(添加字段,删除模型等)到数据库中的方式
- 生成迁移文件,执行 python manage.py makemigrations
将应用下的models.py 文件生成一个中间文件,并保存到migrations文件夹中
2.运行该文件,执行脚本程序,python manage.py migrate
执行迁移程序,将每个应用程序下的migrations目录下的中间文件同步到数据库
此时数据库中就含有数据表了
进入bookstore_book模型
里面就是我们在django框架中创建的表结构
模型名为app名称加上"_"和类名的小写组成