当前位置: 首页 > news >正文

动静态网页、Django创建表关系、Django框架的请求生命周期流程图

一、request对象的几个方法

在视图函数中写方法的时候,都会有一个形参requestdef index(request):passrequest.method  # GET POST
request.GET.get() # 它获取最后一个元素值
request.GET.getlist() # 获取到所有的request.POST.get() # 它获取最后一个元素值
request.POST.getlist() # 获取到所有的def index(request):if request.method == 'POST':# 在这里处理post请求的逻辑return return render(request, 'index.html')

二、django连接MySQL

# 在配置文件中找到DATABASE
# 改连接MySQL数据库的参数
NAME
HOST
PORT
USER
PASSWORD
CHARSET# 接下来就启动框架,这个时候会报错
# 解决报错信息
解释器3.6# 在任意的_init__.py文件中,写入两句话import pymysqlpymysql.install_as_mysqldb()解释器3.8# 改源码

三、Django中的ORM

orm:对象映射模型# 通过写python代码来操作SQL语句,它的好处就是不用在写复杂的SQL语句了,其实以后越复杂的SQL语句写ORM越麻烦,有些时候可能ORM还写不出来,那怎么办,就在django中写原生SQL语句# 它的弊端就是封装的程度较高, 它的执行效率相对会低一些
# 它的原理就是链式表达式:通过一个对象可以一直点出来对象里面的很多方法# 概念
表名:类名记录:对象字段:属性# 在哪里写数据库相关的:models.py
class User(models.Model):id = models.AutoField(priamry_key=True)# 写完之后一定要执行数据库迁移命令
python manage.py makemigrations
python manage.py migrate

四、通过结合前端页面实现ORM对数据的增删改查

写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,
分别是修改、删除的按钮# 表格的展示页面'''思考修改功能的逻辑:'''
1、 确定修改哪条记录,怎么确定?  通过主键id确定唯一一条记录
2、点击修改的按钮,应该跳转到一个修改的页面
3、应该通过id查询到原来的数据,并且把这个记录的数据展示到修改的页面
4、开始修改,提交到后端的修改数据的方法中'''删除功能的逻辑:'''
1、确定删除哪条记录,怎么确定?  通过主键id确定唯一一条记录
2、点击删除的按钮,请求到后端的删除地址
3、后端拿到id直接做删除操作、跳转到列表页面

五、动静态网页

静态网页在页面上写死的数据,一直不会改变的都是静态网页动态网页动态网页是从后端获取到的数据在页面展示数据是从数据库中查询出来的也是动态网页

六、Django创建表关系

"""
一对一
一对多
多对多
"""我们以图书表、出版社表、作者表、作者详情表为例创建# 判断表关系:换位思考法
分析表关系:图书表和出版社表是一对多的关系    >>> 外键如何创建:外键字段建在多的一方图书表和作者表是多对多的关系      >>>  外键如何创建:外键字段建在第三张表中"""创建多对多的方式有3种方式,先将一种"""作者表和作者详情是一对一的关系	   >>>  外键如何创建:外键字段建在查询频率较高的一方# 创建表关系字段先创建表的基础字段,先创建没有的外键的,最后在写外键字段class Book(models.Model):title = models.CharField(max_length=64)"""max_digits=None,        总共多少位decimal_places=None     小数占几位"""# price decimal(8,2)price = models.DecimalField(max_digits=8, decimal_places=2)# publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的"""如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""publish = models.ForeignKey(to='Publish')  # 创建外键的 默认就是跟表的主键字段建立关系"""authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)"""authors = models.ManyToManyField(to='Author', )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')注意:
1.django1版本
on_delete
当删除关联表中的数据时,当前表与其关联的行的行为。models.CASCADE
删除关联数据,与之关联也删除models.DO_NOTHING
删除关联数据,引发错误IntegrityErrormodels.PROTECT
删除关联数据,引发错误ProtectedErrormodels.SET_NULL
删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)models.SET_DEFAULT
删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)models.SET
删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET()
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)2. django2
class Book(models.Model):title = models.CharField(max_length=64)"""max_digits=None,        总共多少位decimal_places=None     小数占几位"""# price decimal(8,2)price = models.DecimalField(max_digits=8, decimal_places=2)# publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的"""如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)  # 创建外键的 默认就是跟表的主键字段建立关系"""authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)"""authors = models.ManyToManyField(to='Author', )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框架的请求生命周期流程图

在这里插入图片描述

http://www.lryc.cn/news/99540.html

相关文章:

  • 神经网络的初始化方法
  • 【SQL Server】DBCC CHECKDB只是一个数据库维护命令吗?
  • 三、Web安全相关知识
  • Android系统服务之AMS
  • Unity UGUI的EventTrigger (事件监听器)组件的介绍及使用
  • Matlab的SimuLink对FS32K144编程--内部数据存储Flash
  • 【MySQL】centos 7下MySQL的环境搭建
  • 【SpringCloud Alibaba】(四)使用 Feign 实现服务调用的负载均衡
  • ShardingSphere-Proxy水平分片详解与实战
  • PTA 1052 Linked List Sorting
  • 五,Eureka 第五章
  • yolov5目标框的融合(两个或多个框)
  • pythonAPI对接示API示例电商数据平台
  • 如何做好IT类的技术面试
  • 比memcpy还要快的内存拷贝,了解一下
  • 正则表达式常用字符及案例
  • 周训龙老兵参观广西森林安全紧急救援装备演练
  • [开发|java] java 将json转化java对象
  • 平台化的测试工具推荐|一站式测试平台RunnerGo
  • PCB封装设计指导(十五)验证封装的正确性
  • Godot 4 插件 - Utility AI 研究
  • 第八章:将自下而上、自上而下和平滑性线索结合起来进行弱监督图像分割
  • MySql忘记密码如何修改
  • 【NetCore】04-作用域与对象释放行为
  • 新材料技术的优势
  • HTTPS、DNS、正则表达式
  • MAC电脑设置charles,连接手机的步骤说明(个人实际操作)
  • 百度文心一言接入教程-Java版
  • Games101学习笔记 - 基础数学
  • Linux进程的认识