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

数据的使用、表关系的创建、Django框架的请求生命周期流程图

目录

一、数据的增删改查

1. 用户列表的展示

2. 修改数据的逻辑分析

3. 删除功能的分析

二、如何创建表关系

三、Django的请求生命周期流程图


一、数据的增删改查

1. 用户列表的展示

把数据表中得用户数据都给查询出来展示在页面上

查询数据

def userlist(request):"""展示用户数据"""# 1、 先查询数据表"""这里不之处负数切片"""# user_list=models.UserInfo.objects.all()[0:2] # 查询所有的数据# user_list=models.UserInfo.objects.first() # 查询所有的数据# select *from userinfo where username ='kevin';# filter:类比where的使用# 只要返回的结果是queryset对象,那么就可以一直点方法下去# user_list=models.UserInfo.objects.filter(username='kevin').first() # 查询所有的数据user_list=models.UserInfo.objects.all() # 查询所有的数据# queryset对象就是一个列表套对象的形式# <QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]># print(user_list[0])# print(user_list[0].username)# print(user_list[0].password)# print(user_list[0].gender)# print(user_list[1].gender)'''支持for循环'''# for i in user_list:#     print(i.gender)return render(request, 'userlist.html', locals())def edit(request):"""先接收id值"""edit_id = request.GET.get('id')"""根据这个id值,再次去表中查询当前这条数据"""# <QuerySet [<UserInfo: kevin>]>edit_obj=models.UserInfo.objects.filter(id=edit_id).first()if request.method == 'POST':hidden_id = request.POST.get('hidden_id')username = request.POST.get('username')password = request.POST.get('password')gender = request.POST.get('gender')

2. 修改数据的逻辑分析

  1. 先确定修改哪条记录------>怎么样确定修改哪条记录?
  2. 通过什么字段可以确定唯一一条记录? 主键id,要携带主键id到后端.
  3. 在后端接收主键id值,然后根据这个id值再去表中查询数据,查询一条
  4. 然后把查询的数据在渲染到页面中,然后在修改
  5. 把修改之后的表单提交到后端,在做修改

数据的修改

    # 第一种方式的修改 affect_rows=models.UserInfo.objects.filter(pk=hidden_id).update(username=username,                 password=password, gender=gender)# print(affect_rows)# 第二种方式的修改edit_obj.username=usernameedit_obj.password=passwordedit_obj.gender=genderedit_obj.save() # 保存数据的# 跳转地址到列表展示也return redirect('/userlist/')
return render(request, 'edit.html', locals())

数据的添加

def delete(request):"""1、还是要接收前端传过来的主键id值"""delete_id = request.GET.get('id')# delete from userinfo where id = 1;# models.UserInfo.objects.filter(pk=delete_id).delete()# user_obj = models.UserInfo.objects.filter(pk=delete_id).first()# user_obj.delete()return redirect('/userlist/')def add(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')gender = request.POST.get('gender')"""操作数据量添加数据"""# 返回的是当前记录的对象# user_obj=models.UserInfo.objects.create(username=username, password=password, gender=gender)# print(user_obj) # pyy# print(user_obj.gender)# print(user_obj.pk)"""第二种方式添加"""user_obj = models.UserInfo(username=username,password=password,gender=gender)user_obj.save()return redirect('/userlist/')return render(request, 'add.html')

3. 删除功能的分析

  • 给删除按钮加一个链接,携带当前记录的id值
  • 后端要接收这个主键id值
  • 后端直接执行删除操作

数据的删除

二、如何创建表关系

  • 一对一 
  • 一对多 
  • 多对多
  • 没有关系

以图书管理系统为例

  • 图书表
  • 出版社表
  • 作者表
  • 作者详情表

换位思考判断表关系

  • 图书表和出版社表        >>>      一对多      >>>   图书表是多,出版社是一    >>> 建在多的一方
  • 图书表和作者表            >>>      多对多     >>>   需要第三张表
  • 作者表和作者详情表    >>>       一对一     >>>  外键字段一般建在查询频率较高的

在Django中如何创建表关系

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"""publish = models.ForeignKey(to='Publish')"""authors它是一个虚拟字段,它不会实际在表中创建出来这个字段,这一句可以自动帮助我们创建出来第三张表"""authors = models.ManyToManyField(to='Author')
"""出版社表"""
class Publish(models.Model):name = 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')
"""作者详情表"""
class AuthorDetail(models.Model):phone = models.CharField(max_length=64)email = models.CharField(max_length=64)

三、Django的请求生命周期流程图

相关文章:

数据的使用、表关系的创建、Django框架的请求生命周期流程图

目录 一、数据的增删改查 1. 用户列表的展示 2. 修改数据的逻辑分析 3. 删除功能的分析 二、如何创建表关系 三、Django的请求生命周期流程图 一、数据的增删改查 1. 用户列表的展示 把数据表中得用户数据都给查询出来展示在页面上 查询数据 def userlist(request):&qu…...

Python基础教程:类--继承和方法的重写

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 什么是继承 继承就是让类与类之间产生父子关系&#xff0c;子类可以拥有父类的静态属性和方法 继承就是可以获取到另一个类中的静态属性和普通方法&#xff08;并非所有成员&#xff09; 在python中&#xff0c;新建的类可…...

Three.js提供了多种类型的灯光

Three.js提供了多种类型的灯光&#xff0c;包括环境光、点光源、平行光源和聚光灯。这些灯光可以用来照亮场景中的物体&#xff0c;使其看起来更加真实。 环境光(AmbientLight)&#xff1a;环境光会均匀地照亮场景中的所有物体&#xff0c;没有方向&#xff0c;不能用来投射阴…...

精通Nginx(10)-负载均衡

负载均衡就是将前端过来的负载分发到两台或多台应用服务器。Nginx支持多种协议的负载均衡,包括http(s)、TCP、UDP(关于TCP、UDP负载均衡另文讲述)等。 目录 HTTP负载均衡 负载均衡策略 轮询 least_conn(最少连接) hash(通用哈希) ip_hash(IP 哈希) random(随…...

Hls学习(一)

1&#xff1a;CPU、DSP、GPU都算软件可编程的硬件 2&#xff1a;dsp在递归方面有所减弱&#xff0c;在递归方面有所增强&#xff0c;比如递归啊等&#xff0c;GPU可以同时处理多个进程&#xff0c;对于大块数据&#xff0c;流处理比较适用 3&#xff1a;为了提高运算量处理更多…...

Maven打包引入本地依赖包

Maven打包引入本地依赖包 SpringBoot 工程&#xff0c;Maven 在构建项目时&#xff0c;如何引入本地 Jar 包&#xff1f; 适合场景&#xff1a; 引用的依赖不在 Maven 仓库第三方公司提供的 SDK 包Maven 内网离线开发引入被定制改动过的 Jar 包 解决方法&#xff1a; 在 I…...

Docker常用命令及部署微服务项目

Docker常用命令及部署微服务项目 1、Docker常用命令 1、设置Yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 2、安装docker yum -y install docker-ce 3、启动docker service docker start 4、验证 docker version 5…...

okhttp添加公共参数

在项目开发中很多时候后台都会给一些全局的公共入参&#xff0c;比如携带手机信息或者时间戳等字段。而我们在使用okhttp时&#xff0c;就需要我们单独就行二次封装处理了&#xff0c;对于请求全局参数&#xff0c;每次请求都要去写一次&#xff0c;那是肯定不行的。 所以就要我…...

基于SpringBoot的SSMP整合案例(开启日志与分页查询条件查询功能实现)

开启事务 导入Mybatis-Plus框架后&#xff0c;我们可以使用Mybatis-Plus自带的事务&#xff0c;只需要在配置文件中配置即可 使用配置方式开启日志&#xff0c;设置日志输出方式为标准输出mybatis-plus:global-config:db-config:table-prefix: tb_id-type: autoconfiguration:…...

android studio 修改图标

Android Studio 修改图标 简介 Android Studio 是一款由谷歌推出的用于开发 Android 应用程序的集成开发环境&#xff08;IDE&#xff09;。在开发过程中&#xff0c;我们可以根据自己的需求修改 Android Studio 的图标&#xff0c;以个性化我们的开发环境。 本文将介绍如何在…...

pytorch学习之第二课之预测温度

主要有以下几个步骤 第一&#xff1a;导入相应的工具包 第二&#xff1a;导入需要使用的数据集 第三&#xff1a;对导入的数据集输入进行预处理&#xff0c;找出特征与标签&#xff0c;查看数据特征的类型&#xff0c;判断是否需要标准化或者归一化处理 第四&#xff1a;构建神…...

基于Mahony互补滤波的IMU数据优化_学习笔记整理

这周自己被安排进行优化软件 IMU 姿态解算项目&#xff0c;之前自己只简单了解四元数&#xff0c;对IMU数据处理从未接触&#xff0c;通过这一周的学习感觉收获颇丰&#xff0c;在今天光棍节之际&#xff0c;&#xff0c;&#xff0c;用大半天的时间对这一周的收获进行整理&…...

c语言实现哈夫曼编码

要实现哈夫曼编码&#xff0c;需要以下步骤&#xff1a; 统计字符出现的频率构建哈夫曼树遍历哈夫曼树&#xff0c;给不同的字符赋予不同的编码将编码后的字符写入文件中 下面是一个简单的 C 语言实现&#xff1a; #include <stdio.h> #include <stdlib.h> #inc…...

Vuex:模块化Module :VCA模式

VCA中不支持辅助函数&#xff0c;因为辅助函数中是用this.$store&#xff0c;而VCA中没有绑定this的 由于使用单一状态树&#xff0c;应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时&#xff0c;store 对象就有可能变得相当臃肿。 这句话的意思是&#xff0c;…...

【uni-app + uView】CountryCodePicker 国家区号组件

1. 效果图 2. 组件完整代码 <template><u-popup class="country-code-picker-container" v-if="show" :show...

思科对路由器的配置

②对路由器R2进行配置 对路由器R2进行配置&#xff0c;先对各接口配置基本IP地址&#xff0c;然后配置动态路由协议。&#xff08;对实验步骤进行文字描述&#xff09; Router>enable //用户模式进入特权…...

实战Leetcode(三)

Practice makes perfect&#xff01; 实战一&#xff1a; 带环问题其实我们小学时就接触过&#xff0c;就比如在操场上比赛跑步的追击问题&#xff0c;这里也是一样&#xff0c;如果我们定义两个指针&#xff0c;一个快指针&#xff0c;一个慢指针&#xff0c;快指针走的快&…...

【PTE-day05 宽字节注入】

1、函数 过滤输入的函数: addslashes mysql_real_escape_string mysql_escape_string当字符的大小为一个字节时,称之为窄字节 例如ascii编码 当字符的大小为两个字节时,称之为宽字节 例如GB2312、GBK、GB8030 mysql使用GBK编码时,默认的会认为两个字符为一个汉字,前一个字…...

计算机网络期末复习-Part3

1、rdt1.0&#xff0c;rdt2.0&#xff0c;rdt3.0的底层信道模型 RDT 1.0: 完全可靠的底层信道&#xff0c;没有比特差错&#xff0c;也没有分组丢失。 RDT 2.0: 具有比特差错的底层信道&#xff0c;有比特差错&#xff0c;但没有分组丢失。 RDT 3.0: 具有差错和丢包的底层信道…...

docker在虚拟机中的应用

文章目录 Docker的基础概念与入门docker与docker镜像的理解虚拟机下[ubantu系统下]Docker的安装Docker-engine 的常用命令Docker 的 Example配置Docker的国内源虚拟机安装Postgresql的Docker物理机访问Postgresql数据库利用Docker-engine容器化前端项目工程1. 编写项目电器2. 构…...

次元画室新手入门:不懂绘画也能设计二次元角色的秘诀

次元画室新手入门&#xff1a;不懂绘画也能设计二次元角色的秘诀 你是否曾经看着精美的动漫角色&#xff0c;心想"要是我也能设计出这样的角色该多好"&#xff1f;但当你拿起画笔&#xff0c;却发现无从下手——比例不对、线条歪斜、配色混乱&#xff0c;最后只能无…...

优雅地使用MUI组件:去除最后一个分隔线

在使用Material-UI(MUI)组件开发用户界面时,我们经常需要对菜单或列表进行分组,并在每个分组之间添加一个分隔线以增强视觉区分度。然而,有时我们不希望在最后一个分组后添加分隔线,因为这会显得多余。今天我们将探讨如何在MUI中实现这种需求,确保UI的清洁和美观。 背景…...

2026 云+AI 架构选型指南:从 IaaS 到 MaaS 的九大服务模型与云原生实战涵盖—— IaaS、PaaS、SaaS、FaaS、CaaS、DaaS、MaaS、KaaS、XaaS 全栈服务模型

引言&#xff1a;数字时代的“水电煤”革命在数字经济时代&#xff0c;计算资源如同工业时代的电力与自来水&#xff0c;正以前所未有的方式被标准化、商品化和按需交付。这一变革的核心&#xff0c;正是云计算。而云计算的精髓&#xff0c;在于其分层的服务模型——从最底层的…...

STM32F103驱动1.44寸TFT屏(ST7735R)避坑实录:从屏幕偏移到SPI配置详解

STM32F103驱动1.44寸TFT屏&#xff08;ST7735R&#xff09;实战指南&#xff1a;从硬件连接到显示优化 刚拿到一块1.44寸TFT屏准备接入STM32F103时&#xff0c;很多开发者会面临一个尴尬局面——网上的参考代码能点亮屏幕&#xff0c;但显示效果总有些"不对劲"。要么…...

第九节Amesim《三位四通换向阀HCD建模实战:从零到一构建精准模型》

1. 三位四通换向阀HCD建模入门指南 第一次接触Amesim的HCD建模时&#xff0c;我也被那些专业术语搞得一头雾水。直到接手一个液压系统项目&#xff0c;需要为某型号滑阀建立精确模型&#xff0c;才真正摸清门道。三位四通换向阀就像液压系统的交通警察&#xff0c;通过阀芯位移…...

Guesstimate未来路线图:AI集成、私有部署和协作功能的展望

Guesstimate未来路线图&#xff1a;AI集成、私有部署和协作功能的展望 【免费下载链接】guesstimate-app Create Fermi Estimates and Perform Monte Carlo Estimates 项目地址: https://gitcode.com/gh_mirrors/gu/guesstimate-app Guesstimate是一款强大的费米估算和蒙…...

Python爬虫实战:手把手教你绿色建材类别总表自动化采集与层级目录建模工程!

㊗️本期内容已收录至专栏《Python爬虫实战》&#xff0c;持续完善知识体系与项目实战&#xff0c;建议先订阅收藏&#xff0c;后续查阅更方便&#xff5e; ㊙️本期爬虫难度指数&#xff1a;⭐ (基础入门篇) &#x1f250;福利&#xff1a; 一次订阅后&#xff0c;专栏内的所有…...

Matlab R2023a绘图避坑指南:xlabel设置无效?可能是你忽略了这3个细节(多图、子图、字体)

Matlab R2023a绘图避坑指南&#xff1a;xlabel设置无效的3个关键细节 最近在帮实验室师弟调试Matlab代码时&#xff0c;发现一个有趣的现象&#xff1a;明明照着官方文档写的xlabel语句&#xff0c;运行时却总是出现各种"灵异事件"。有的标签神秘消失&#xff0c;有的…...

技术代理的访问控制与增强功能

技术代理的访问控制与增强功能&#xff1a;构建智能安全屏障 在数字化时代&#xff0c;技术代理&#xff08;如API网关、微服务代理或边缘计算节点&#xff09;已成为企业架构的核心组件。它们不仅负责请求转发与协议转换&#xff0c;更通过精细的访问控制与功能增强&#xff…...

数学分析基础:从实数公理到确界原理的习题精解

1. 实数公理系统&#xff1a;数学分析的基石 第一次接触实数公理时&#xff0c;我完全被那一堆抽象符号搞懵了。直到后来在习题中反复摔打&#xff0c;才真正理解这些看似枯燥的公理如何构建起整个数学分析大厦。实数的公理化描述是整个数学分析的基础&#xff0c;就像盖房子前…...