- 通过结合前端页面实现ORM对数据的增删改查 - Django中如何创建表关系 - 一对一 - 一对多 - 多对多 - Django框架的请求生命周期流程图 - 路由层urls.py - 视图层views.py - 模板层templates
2.python manage.py makemigratins迁移记录
3.python manage.py migrate创建表格
2.创建一个展示页面
1.定义一一个函数用来展示用户数据,需要给表的类 增加一个——str——的方法
2. 创建一个HTML文件
补充:变量分配
方法
rander()中的第三个参数为关键字参数 我们可以写成{k:v}的形式,k我们可以随便定义,v就是函数中的变量
locals()匹配出函数的中的局部变量
通过这个方法我们就可以在HTML中展示数据库中的数据
html固定语法:{ {} }
3.利用locls方法匹配出数据的信息
1.匹配出信息,在html中特定格式:循环打印数据库中的数据
{% for foo in user_l %}
{% endfor %}
2.locals()相当于{'user_l':user_l}
3.具体的数据就要用{ {foo.k值} }
案例
函数
HTML
修改页面数据
思考修改功能的逻辑:
1、 确定修改哪条记录,怎么确定? 通过主键id确定唯一一条记录
2、点击修改的按钮,应该跳转到一个修改的页面
3、应该通过id查询到原来的数据,并且把这个记录的数据展示到修改的页面
4、开始修改,提交到后端的修改数据的方法中
删除功能的逻辑
1、确定删除哪条记录,怎么确定? 通过主键id确定唯一一条记录
2、点击删除的按钮,请求到后端的删除地址
3、后端拿到id直接做删除操作、跳转到列表页面
动静态页面
静态网页
在页面上写死的数据,一直不会改变的都是静态网页
动态网页
动态网页是从后端获取到的数据在页面展示
数据是从数据库中查询出来的也是动态网页
django创建表关系
三种关系
一对一
一对多
多对多
例子:图书表、出版社表、作者表、作者详情表为例创建
判断表关系:换位思考
分析表关系:
图书表和出版社表是一对多的关系 >>> 外键如何创建:外键字段建在多的一方
图书表和作者表是多对多的关系 >>> 外键如何创建:外键字段建在第三张表中
作者表和作者详情是一对一的关系 >>> 外键如何创建:外键字段建在查询频率较高的一方
ps:创建表关系字段先创建表的基础字段,先创建没有的外键的,最后在写外键字段
创建小数
.DecimalField(max_digits=8, decimal_places=2)
max_digits=None, 总共多少位
decimal_places=None 小数占几位
一对多创建外键
.ForeignKey(to='Publish', to_field='id')
创建外键的 默认就是跟表的主键字段建立关系,to_field='id'参数可以不写
多对多创建外键
.ManyToManyField(to='Author' )
它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)
如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id
一对一创建外键
.OneToOneField(to='AuthorDetail')
案例
class Book(models.Model): title = models.CharField(max_length=64, verbose_name='书名') prince = models.DecimalField(max_digits=8, decimal_places=2) publish = models.ForeignKey(to='Publish') class Publish(models.Model): title = models.CharField(max_length=64) addr = models.CharField(max_length=64) authors = models.ManyToManyField(to='Author') class Author(models.Model): name = models.CharField(max_length=64) author_detail = models.OneToOneField(to='AuthorDetail') class AuthorDetail(models.Model): phone = models.CharField(max_length=64) qq = models.CharField(max_length=64)
Django版本1与Django版本2创建表关系之间的区别
Django2中少一个参数,需要我们自己上传,Django1中有默认值,这个参数就是:on_delete
on_delete
当删除关联表中的数据时,当前表与其关联的行的行为
models.CASCADE
删除关联数据,与之关联也删除
models.DO_NOTHING
删除关联数据,引发错误IntegrityError
models.PROTECT
删除关联数据,引发错误ProtectedError
models.SET_NULL
删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
models.SET_DEFAULT
删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
models.SET
删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET(值)
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
Django2创建表关系代码
class Publish(models.Model): title = models.CharField(max_length=64) addr = models.CharField(max_length=64) class Author(models.Model): name = models.CharField(max_length=64) author_detail = models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE) class AuthorDetail(models.Model): phone = models.CharField(max_length=64) qq = models.CharField(max_length=64)
Django框架的请求生命周期流程图
其实就是帮我我们梳理django框架的执行流程,他能够更好的帮助我们后面的复习
流程逻辑
中间件可以自己写,跟在七个中间件后面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY