目录
day02回顾
1.模板
- 加载方式
- loader
- render
- 语法
- 变量
return render(request,'xx.html',{})
模板中:{{变量}} - 标签
- {% for %} ... {% endfor %}
- {% if %} ... {% endif %}
- {% comment %} ... {% comment %}
- {% static '' %}
- {% load static %}
- 过滤器
{{value|upper}}
将value变为大写
{{value|lower}}
将value变为小写
{{value|add:num}}
将num值累加到value之后
{{value|floatformat:n}}
将value四舍五入到n位小数
{{value|truncatechars:n}}
将value截取保留至n位字符(包含...)
- 变量
- 静态文件
在settings.py中设置变量- 设置静态文件的访问路径
STATIC_URL = ‘/static’ - 设置静态文件的存储路径
STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)- 项目的根目录处创建一个static目录
- 每个应用中创建一个static目录
- 设置静态文件的访问路径
1.模板
- 模板的继承
- 语法
- 在父模板中
必须要标识处哪些内容在子模板中允许被修改
标签:
{% block 名称 %}
{% endblock %}
blcok的作用:- 在父模板中正常显示
- 在子模板中,如果不修改的话则按父模板的显示,要是修改的话则按照子模板的内容显示
- 在子模板中
- 指定继承自哪个父模板
{% extends ‘父模板名称’ %} - 增加 block 标签,改写属于自己的内容
{% block 名称 %}
{% endblock %}
练习:- 创建项目 - fruitday
- 创建应用 - index,配置好响应的路由
- 访问http://localhost:8000/login
显示 之前已经做好的 登录页面(处理好静态资源文件) - 访问http://localhost:8000/register
创建一个新的模板继承自登录页面,并按照注册的样式进行模板的重写
- 指定继承自哪个父模板
- 在父模板中
- 语法
- url()的name参数
- url的语法
url(regex,views,kwargs,name)
name:为了给当前的url地址起别名,反向解析时使用
反向解析:通过别名找到对应的地址
url(regex,views,kwargs=None,name='别名') - 反向解析
- 在模板上做反向解析
- 基本解析
{% url '别名' %} - 带参的解析
{% url '别名' '参数1' '参数2' %}
- 基本解析
- 在视图上做反向解析
- 基本解析
url = reverse('别名')
url 就是通过别名解析出来的地址 - 带参的解析
url = reverse('别名' args=(参数1,参数2))
- 基本解析
- 在模板上做反向解析
- url的语法
2.模型 - Models
- 什么是模型
根据数据库表结构创建出来的class - ORM
三大特征- 表 到 类的映射
- 数据类型的映射
- 关系映射
- 创建 和 配置数据库
- 创建数据库
create database webdb default charset utf8 collate utf8_general_ci; - Django数据库配置
在settings.py中配置数据库信息
DATABASES = {
'dafault' : {
... ...
}
}- ENGINE:django.db.backends.sqlite3
连接到mysql:django.db.backends.mysql - NAME:连接到数据库的名称
- USER:登录到数据库的用户名,通常为root
- PASSWORD:登录到数据库的密码,通常为 123456
- HOST:要连接到主机地址
本机:localhost 或 127.0.0.1 - PORT:指定端口号 ,mysql为3306
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'webdb', 'USER':'root', 'PASSWORD':'123456', 'HOST':'localhost', 'PORT':3306, } }
- ENGINE:django.db.backends.sqlite3
- 数据库的同步操作
- ./manage.py makemigrations
作用:将每个应用下的models.py文件生成一个数据库的中间文件,并将中间文件保存在migrations的目录文件中 - ./manage.py migrate
作用:将每个应用下的migrations目录中的中间文件同步到数据库
- ./manage.py makemigrations
- 创建数据库
- 编写Models
- 举个例子
在index应用中的 models.py 中
#创建一个实体类 - Publisher
#用于表示出版社信息,属性如下
#1.name:出版社名称(varchar)
#2.address:出版社所在地址(varchar)
#3.city:出版社所在城市(varchar)
#4.country:出版社所在国家(varchar)
#5.website:出版社的网址(varchar)class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=200) city = models.CharField(max_length=50) country = models.CharField(max_length=50) website = models.URLField()
- Models的语法规范
class ClassName(models.Model):
属性 = models.字段类型(字段选项)
字段类型:映射到数据库表中的数据类型
CharField() - varchar
字段选项:指定生成的字段的说明信息
max_length=30- 字段类型(Field Types):
- BooleanField()
编程语言中适应 True 和 False 表示该列的值
数据库中使用 1 和 0 来表示具体的值
数据类型为:tinyint - CharField()
字符串
数据类型为:varchar - DateField()
编程语言中使用 字符串 或 date 类型的数据表示值
数据库中的使用 时间字符串
数据类型为:date - DateTimeField()
数据类型为:datetime - DecimalField()
数据类型为:decimal
money = models.DecimalField(max_digits=7,decimal_places=2) - FloatField()
数据类型为:float - IntegerField()
数据类型为:int - EmailField()
数据类型为:varchar - URLField()
数据类型为:varchar - ImageField()
存储图片的路径
数据类型为:varchar
image = models.ImageField(upload_to='images/users/')
- BooleanField()
- 字段选项(Field Options):
- default
作用:为当前字段指定默认值 - null
作用:指定当前字段是否允许为空,默认为False,不能为空 - primary_key
作用:指定是否为主键 - db_column
作用:指定当前字段映射到表中类的名字,如果不指定则采用属性名作为列名
- default
- 练习:
在index 应用中的models.py中追加两个class- Author - 作者
- name - 姓名
- age - 年龄
- emial - 邮箱(允许为空)
class Author(models.Model): name = models.CharField(max_length=30) age = models.IntegerField() email = models.EmailField(null=True) isActive = models.BooleanField(default=True)
- Book - 图书
- title - 图书
- publicate_date - 出版时间
class Book(models.Model): title = models.CharField(max_length=50) publicate_date = models.DateField()
- Author - 作者
- 字段类型(Field Types):
- 举个例子
- 相关指令
- 通过数据库自动导出models
./manage.py inspectdb > 文件名.py - 数据的版本的切换
- ./manage.py migrate
执行所有应用中最新版本的数据库中间文件 - ./manage.py migrate 应用名称 版本号
执行指定应用中指定版本的中间文件
ex: ./manage.py migrate index 0002
- ./manage.py migrate
- 通过数据库自动导出models
示例 请点击
kauw