django models

1、模板
1、模板的设置
settings.py 找到 TEMPLATES
1、BACKEND :模板的搜索引擎
2、DIRS :指定模板所存放的位置,如果该位置为空的话,DJANGO会自动搜索 templates 的文件夹
3、APP_DIRS
2、模板的加载方式
1、使用 loader 加载模板
from django.template import loader


t=loader.get_template('xxx.html')
html=t.render({})
return HttpResponse(html)
2、使用 render 加载模板
return render(request,'xxx.html',{})
3、url 函数中的 name 参数
url(regex,views,kwargs=None,name=None)
name : 为url起别名,在模板中,允许通过别名找到url()
使用方式:
1、为 url 增加 name 并起名
url(r'^show/$',show_views,name='sh')
2、在模板中
<a href="{%url 'sh'%}">

有参数的使用方式:
1、url(r'^show/(\w+)',show_views,name='sh')
2、<a href="{%url 'sh' 'aaa'%}">
4、模板中的语法
1、变量
允许将后端(视图)中的数据传递给模板(html),模板会根据值来显示


语法:
1、views 中
name = 'sanfeng.zhang'
age = 18
return render(request,'xx.html',locals())
2、templates 中
{{变量名}}
<h1>{{name}}</h1>
<h1>{{age}}</h1>
允许作为变量传递给模板的类型:
数字,字符串,列表,元组,字典,函数,对象
2、标签
1、语法
{% %}
2、常用标签
1、{%if 条件%} ... {%endif%}
2、{%if 条件%}...{%else%}...{%endif%}
3、{%ifequal 值1 值2%}...{%endifequal%}
4、{%ifequal 值1 值2%}..{%else%}..{%endifequal%}
5、{%for 变量 in 列表|元组|字典%}..{%endfor%}
1、forloop.counter:记录循环的次数
2、forloop.counter0:同上,从0计算
3、forloop.revcounter
4、forloop.revcounter0
5、forloop.first 布尔值
6、forloop.last 布尔值
6、{%url%}
7、{%static%}
8、{%extends%}
3、过滤器
1、什么是过滤器
在显示数据前,对数据进行改变
2、语法
{{变量|过滤器}}
3、常用过滤器
{{var|upper}}
{{var|floatformat:3}}
4、静态文件
1、什么是静态文件
图片,css,js,等一些外部资源文件都称之为静态文件
2、settings.py 设置静态文件的访问路径和存储路径
1、STATIC_URL
指定静态文件的访问路径
STATIC_URL = '/static/'
2、STATICFILES_DIRS
指定静态文件的存放路径
STATICFILES_DIRS=(BASE_DIR,'static')


STATICFILES_DIRS=(
(BASE_DIR,'static'),
(BASE_DIR,'infos')
)
3、使用静态文件
1、直接通过根相对路径访问
<img src="/static/images/a.jpg">
2、使用 {%static%}
1、在模板的最顶端
{%load static%}
2、使用时
<img src="{%static 'images/a.jpg'%}">


==================================================
1、模板
1、变量(略)
2、标签(略)
3、过滤器(略)
4、静态文件(略)
5、模板的继承
1、什么是模板的继承
当多个模板(网页)具备大部分相同的内容时,就可以使用继承的方式,将相同的内容继承过来,再增加/修改属于自己的内容即可
2、模板继承的语法
1、在父模板中
增加{%block 名称%}...{%endblock%}标签
2、在子模板中
1、在最顶层第一句话增加 :
{%extends '父模板的名称'%}
2、增加 block 标记,编写属于自己的内容
{%block 名称%}
属于子模板中自己的内容
{%endblock%}
2、模型 - Models
1、什么是模型
模型,就是根据数据库中数据表的结构而创建出来的class。数据库中的每一张表到编程语言中就是一个class。数据库表中的一个字段(列)可以被构建成class中的一个成员变量(属性)。并且在模型中,完成对数据的CRUD操作
C:Create
R:Retrieve
U:Update
D:Delete
2、创建 和 使用模型 - ORM
1、什么是ORM
ORM:Object Relational Mapping
简称:ORM,O/RM,O/R Mapping
中文为:对象关系映射
三大特征:
1、数据表 到 类(class) 的映射
允许将表自动生成 一个类
也允许将一个类自动生成一个表
2、数据类型的映射
允许将表中字段的类型自动生成到编程语言中对应的数据类型
也允许将编程语言中的数据类型生成数据库中对应的字段类型
3、关系映射
数据库中表的关联关系:
一对一,一对多(多对一),多对多


将表中的关联关系也映射到编程语言的class中,通过创建对象的关系来完成映射
2、ORM的优点
1、提高了开发效率,能够自动完成实体类到数据表的映射,可以省略庞大的数据访问层
2、不用SQL编码,就能完成对数据的CRUD操作
3、创建 和 配置数据库
1、创建数据库(支持中文)
create database webdb default charset utf8 collate utf8_general_ci
2、Django中数据库的配置
settings.py 中配置数据库的信息
DATABASES = {
'default':{
'ENGINE':'...',
'NAME':'',
}
}


1、ENGINE :引擎
django.db.backends.mysql
2、NAME:要连接到的数据库的名称
3、USER:用户名称,通常为 root
4、PASSWORD:密码,123456
5、HOST:连接的主机,本机的话 localhost / 127.0.0.1 / 不写
6、PORT:端口,3306
4、数据库的同步操作
1、./manage.py makemigrations
作用:将每个应用下的models.py文件映射成一个数据库日志文件,并存放在 migrations 文件夹中
2、./manage.py migrate
作用:将每个应用下的migrations文件夹中的日志文件同步到 数据库中
5、编写Models
1、注意
1、Models中的每个class都称之为 模型类(Model) 或 实体类(Entry)
2、Models中的每个实体类,必须继承自models.Model
2、ex
models.py


from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharFiled(max_length=20)
country = models.CharField(max_length=20)
website = models.URLField()
6、Django提供的数据字段 以及 字段选项
1、数据字段(Field Types)
1、BooleanField()
2、CharField()
3、DateField()
4、DateTimeField()
5、FloatField()
6、FileField()
7、EmailField()
8、IntegerField()
9、ImageField()
10、URLField()
11、DecimalField()
2、字段选项(Field Options)
1、null :是否允许为空
name=models.CharField(max_length=30,null=True)
2、default :为该列设置默认值
name=models.CharField(max_length=30,default='匿名')
练习:
在 models.py 中追加2个class
1、Author - 作者
1、name ,
2、age ,
3、email ,
2、Book - 图书
1、title 
2、publication_date
7、数据的导入和导出(数据迁移) 以及 版本切换
1、版本切换
./manage.py migrate 应用名称 版本号
ex:
./manage.py migrate index 0001
2、数据库的导出
1、mysqldump -u root -p 数据库名 > 文件.sql
(导出所有的表结构 以及 数据)
2、mysqldump -u root -p -d 数据库名 > 文件.sql
(导出所有表结构,不导出数据)
3、数据库的导入
mysql -u root -p 数据库名 < 文件.sql
(要求数据库必须存在)
4、通过数据库自动导出Models
./manage.py inspectdb > 文件.py



实体:
数据表中的一行记录,就是一个实体
实体完整性:确保每张表中的数据不能有重复的。数据表中的主键,是实现实体完整性的方式之一
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值