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

news2024/9/29 13:28:52

一、request对象的几个方法

在视图函数中写方法的时候,都会有一个形参request

def index(request):
    pass

request.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 pymysql
    pymysql.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
删除关联数据,引发错误IntegrityError

models.PROTECT
删除关联数据,引发错误ProtectedError

models.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.coloradmin.cn/o/804325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年Q2京东清洁电器行业分析报告(京东数据平台)

如今,消费者尤其是年轻一代对智能产品替代繁琐家务劳动的需求日趋强烈,这激发了对清洁电器产品需求的增长。随着各类清洁电器的热度持续增长,我国清洁电器的零售额也在逐年攀升。 接下来结合鲸参谋平台数据,我们一起来分析当前清洁…

算法----二叉搜索树中第K小的元素

题目 二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1 输出&#xff…

练习四答案

练习2答案 构建数据库 数据库 数据表 answer开头表为对应题号答案形成的数据表 表结构 表数据 答案: 1、编写脚本,创建mis数据库,创建dept,创建employee表 SQL语句 CREATE TABLE dept ( …

HCIP——OSPF的重发布以及路由策略

OSPF重发布以及路由策略 一、重发布1、作用2、条件3、规则4、名词解释点向 5、单点重发布6、双点重发布 二、路由策略1、控制层流量和数据层流量2、抓流量ACL列表前缀列表 (ip-prefix) 3、做策略过滤策略(filter-policy)路由策略(route-policy) 一、重发布 在同一个网络拓扑结…

工欲善其事必先利其器,IT工作电脑更要维护好

目录 一:电脑的组成 二:维护措施 三:助力记忆 一:电脑的组成 当谈到电脑主机时,我们通常指的是电脑的中央处理器(CPU)、内存、主板、电源、硬盘、显卡、声卡、网卡等核心部件组成的整体。这些部件共同协作&#xff…

CSS 高频按钮样式

矩形与圆角按钮 正常而言&#xff0c;我们遇到的按钮就这两种 -- 矩形和圆角&#xff1a; 它们非常的简单&#xff0c;宽高和圆角和背景色。 <div classbtn rect>rect</div><div classbtn circle>circle</div>.btn {margin: 8px auto;flex-shrink: 0;…

率土抽卡助手 微信小程序开发

欢迎使用 微信率土抽卡助手 你好&#xff01;率土抽卡助手是包含全赛季土地难度表、开荒阵容、武将阵容、主城守军阵容推荐、内政、荣誉值计算、拆迁队、队伍克制、沃土坐标、鱼塘坐标、武将寻访技巧、行军外观判断队伍、T0阵容、战法拆解、卡包抽取等全功能小程序。可在微信游…

机器人状态估计:robot_localization 功能包简介与安装

机器人状态估计&#xff1a;robot_localization 功能包简介与参数配置 前言功能包简介安装使用ubuntu软件源安装使用源码安装 前言 移动机器人的状态估计需要用到很多传感器&#xff0c;因为对单一的传感器来讲&#xff0c;都存在各自的优缺点&#xff0c;所以需要一种多传感器…

Linux下CMake开发

CMake编译和运行C文件 编写CMakeLists.txt # 声明要求的 cmake 最低版本 cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程 project( pro )# 设置编译模式 set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库 #指定OpenCV版本&#xff0c;代码如下 #find…

vue2+wangEditor5富文本编辑器(图片视频自定义上传七牛云/服务器)

1、安装使用 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save在main.js中引入样式 import wangeditor/editor/dist/css/style.css在使用编辑器的页…

压缩算法的原理丨基因型vcf文件为什么压缩后发生了什么?

压缩算法的本质 最近碰到一个神奇的现象&#xff0c;一份大小为16GB的xx.vcf.gz文件&#xff0c;解压之后体积变为600GB的vcf文件&#xff0c;为什么一份文件经过压缩后体积缩小了这么多&#xff1f; (work) [bio notes 21:29:40 ~/work/20230726/data]$ ls -lh总用量 620GB-…

mac m1安装Centos9

先看结果&#xff08;在mac M1 安装centos8 安装不成功的原因大部分是没有找到正确的系统&#xff09; 由于Cnetos8 停服&#xff0c;现有mac m1 上能够按照的Centos8 并非由官方发布&#xff0c;因此寻找官方发布的能够在mac m1上安装的centos版本。 在YouTuBe上找到一个视频…

华为产品测评官-开发者之声 +【小白的CodeArts产品体验(Devops实践)】

关于使用华为云Codearts产品中产品优点以及实践中出现的问题 一、Devops简介二、产品的优点1. 直观化的思维导图2. 迭代详情3. 合理的项目工作流程4. 合理的分支请求5. 可视化的代码问题统计图6. 报告的完整性7.流水线视图 三、实践中的小坑第一个小坑第二个小坑第三个小坑&…

点击按钮横向滚动左右滚动

展示 原理 隐藏超过部分&#xff0c;通过设置元素左侧的滚动距离&#xff0c;使元素向右向左滚动 1.scrollLeft&#xff1a;元素左侧已滚动的距离&#xff0c;即位于元素左边界与元素中当前可见内容的最左端之间的距离 2.scrollWidth:元素的整体宽度&#xff0c;包括由于溢出…

现代C++中的从头开始深度学习:激活函数

一、说明 让我们通过在C中实现激活函数来获得乐趣。人工神经网络是生物启发模型的一个例子。在人工神经网络中&#xff0c;称为神经元的处理单元被分组在计算层中&#xff0c;通常用于执行模式识别任务。 在这个模型中&#xff0c;我们通常更喜欢控制每一层的输出以服从一些约束…

详解python中的垃圾回收机制

目录 什么是垃圾回收机制 垃圾回收的工作流程 为什么要进行垃圾回收 详解python中的垃圾回收机制 总结 什么是垃圾回收机制 垃圾回收&#xff08;Garbage Collection&#xff09;是一种自动内存管理机制&#xff0c;用于检测和释放不再被程序使用的内存资源&#xff0c;以…

【数据结构】实验十一:图

实验十一 图 一、实验目的与要求 1&#xff09;掌握图的存储表示与操作实现。 2&#xff09;掌握图的连通性及其应用。 二、 实验内容 1.用邻接表存储一个图形结构&#xff0c;并计算每个顶点的度。 2. 采用深度和广度优先搜索算法&#xff0c;遍历上述这张图&#xff0c;…

CSS之允许点击穿透

一、pointer-events 属性用于设置元素是否对鼠标事件做出反应。 二、属性值 三、如果设置点击穿透效果&#xff0c;使用 pointer-events:none; 设置作用元素即可 .your-classname {pointer-events:none; }

23款奔驰S400豪华型升级后排电动腿托系统,提升后排乘坐舒适性

奔驰S400L后排座椅是不带腿托和脚托的&#xff0c;也没有一键躺平功能&#xff0c;相对于奔驰S级高配车型上配置的右边老板位座椅&#xff0c;舒适性就差强了一些。

AX88179A千兆网卡芯片,支持switch联网

AX88179是世界上第一个USB 3.0&#xff0c;千兆以太网控制器&#xff0c;它在单一芯片上集成了USB 3.0 PHY和10/100/1000Mbps千兆以太网MAC / PHY。AX88179是最新此外ASIX的USB-到-LAN产品组合&#xff0c;提供一个小的形式因素的解决方案和插头-和-打法可用性&#xff0c;使嵌…