计算机基础知识50

数据的增删改查(insert update delete select)

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

1. 查询

from app01 import models
models.UserInfo.objects.all() # 查询所有的字段信息和数据
res=models.UserInfo.objects.first() # 查询一条,而且是第一条,queryset对象,列表套对象的形式
if res:res[0]
try:res[0]
# 它是支持索引取值的,如果是第一条就直接first()
select * from userinfo where username ='' and password = '';
res=models.UserInfo.objects.filter(username='', password='').first()  # and
res=models.UserInfo.objects.filter(username='').filter(password='').filter().first() # and
"""链式表达式的思想,jQuery中也有这样的写法"""
models.UserInfo.objects.all()[0]
models.UserInfo.objects.all()[0:2] # 支持切片

2. 增加

models.UserInfo.objects.create(username='', password='')
res=models.UserInfo(username='', password='')
res.save() # 真正的操作数据库

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

models.UserInfo.objects.filter(pk=1).update(username='', password='')
res=models.UserInfo.objects.first()
res.username='';
res.password=''
res.save()    # 真正的操作数据库

4、删除功能的分析

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

models.UserInfo.objects.filter(pk=1).delete()
res.delete()

数据的增删改查汇总

"views.py"

from django.shortcuts import render,HttpResponse,reverse,redirect# Create your views here.def home(request):print('request')return HttpResponse('/home/')from app01 import modelsdef login(request):print(request.method,type(request.method))if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')print(request.POST.getList('hobby'))res = models.UserInfo.objects.filter(username='123',password='123').all()print(res)res.username=''res.password=''if username == 'kevin' and password == '123':print('登录成功')models.UserInfo.objects.create(username='kevin',password='123')return redirect('/index/')else:return HttpResponse("用户名或密码错误")print(request.GET)print(request.GET.get('a'))print(request.GET.get('b'))print(request.GET.get('c'))print(request.GET.get('c'))print(request.GET.getlist('c'))return render(request,'login.html')def userlist(request):user_list=models.UserInfo.objects.all()#查询所有信息"""这里不之处负数切片"""# user_list=models.UserInfo.objects.all()[0:2] # 查询所有的数据'''支持for循环'''# for i in user_list:#     print(i.gender)## queryset对象就是一个列表套对象的形式# <QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]># print(user_list[0])print(user_list[0].username)return  render(request,'userlist.html',locals())def edit(request):edit_id = request.GET.get('id')edit_ibj = 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')# 修改affect_rows = models.UserInfo.objects.filter(pk=hidden_id).update(username=username,password=password,gender=gender)return redirect('/userlist/')return render(request,'edit.html',locals())def delete(request):delete_id = request('/userlist/')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(username=username,password=password,gender=gender)user_obj.save()return redirect('/userlist/')return render(request,'add.html')def ab_render(request):user_dict1 = {'username':'kevin','password':123}user_dict1 = {'a':1}print(locals())return render(request,'')

"urls.py"


from django.contrib import admin
from django.urls import path
from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('login/', views.login),path('home/', views.home),path('userlist/', views.userlist),path('edit/', views.edit),path('delete/', views.delete),path('add/', views.add),path('ab_render/', views.ab_render),]

"models.py"

from django.db import models# Create your models here.class UserInfo(models.Model):username = models.CharField(max_length=32,verbose_name='用户名')password = models.CharField(max_length=64,verbose_name='密码')gender = models.CharField(max_length=32)def __str__(self):return self.username

"__init__.py"

import pymysql
pymysql.install_as_MySQLdb()

前端:"ab_render.html"

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"><script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>{{ user_dict.username }}
{{ user_dict.password }}
{{ user_dict1 }}
{{ user_dict1.a }}
</body>
</html>

"add.html"

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><link rel="stylesheet" href="bootstrap-3.4.1-dist/css/bootstrap.min.css"><script src="bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container"><div class="row"><h1 class="text-center">添加页面</h1><form action="" method="post"><div class="form-group">用户名:<input type="text" class="form-control" name="username"></div><div class="form-group">密码:<input type="password" class="form-control" name="password"></div><div class="form-group">性别:<input type="text" class="form-control" name="gender"></div></form></div>
</div>
</body>
</html>

"edit.html"

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"><script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container"><div class="row"><h1 class="text-center">修改页面</h1><form action="" method="post"><input type="hidden" value="{{ edit_obj.pk }}" name="hidden_id"><div class="form-group">用户名: <input type="text" class="form-control" name="username" value="{{ edit_obj.username }}"></div><div class="form-group">密码: <input type="password" class="form-control" name="password" value="{{ edit_obj.password }}"></div><div class="form-group">性别: <input type="text" class="form-control" name="gender" value="{{ edit_obj.gender }}"></div><div class="form-group"><input type="submit" class="btn btn-info btn-block" value="提交"></div></form></div>
</div>
</body>
</html>

"index.html"

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><link rel="stylesheet" href="bootstrap-3.4.1-dist/css/bootstrap.min.css"><style>h1{color: hotpink;}</style>
</head>
<body>
<h1>第一个模板文件</h1>
</body>
</html>

"login.html"

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><link rel="stylesheet" href="bootstrap-3.4.1-dist/css/bootstrap.min.css"><script src="bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container"><div class="row"><h1 class="text-center">登录页面</h1><form action="" method="post"><div class="form-group">用户名:<input type="text" class="form-control " name="username"></div><div class="form-group">密码:<input type="password" class="form-control " name="password"></div><div class="form-group"><input type="checkbox" name="hobby" value="a"><input type="checkbox" name="hobby" value="b"><input type="checkbox" name="hobby" value="c"></div><div class="form-group"><input type="submit" class="btn btn-success btn-block" value="登录"></div></form></div>
</div>
</body>
</html>

"userlist.html"

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"><script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container"><div class="row"><h1 class="text-center">用户列表</h1><a href="/add/" class="btn btn-success">添加用户</a><table class="table table-striped table-hover table-bordered"><thead><tr><th>ID</th><th>username</th><th>password</th><th>gender</th><th>action</th></tr></thead><tbody>{% for user in user_list %}<tr><td>{{ user.id }}</td><td>{{ user.username }}</td><td>{{ user.password }}</td><td>{{ user.gender }}</td><td><a href="/edit/?id={{ user.id }}" class="btn btn-success">修改</a>&nbsp;&nbsp;&nbsp;<a href="/del/?id={{ user.pk }}" class="btn btn-danger">删除</a></td></tr>{% endfor %}</tbody></table></div>
</div>
</body>
</html>

如何创建表关系(一对一 一对多 多对多)

### 换位思考法判断表关系
图书表和出版社表   >>>    一对多   >>>   图书表是多,出版社是一  >>>    建在多的一方
图书表和作者表        >>>   多对多    >>>   需要第三张表
作者表和作者详情表 >>>    一对一        >>>  外键字段一般建在查询频率较高的

### 在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的一个完整执行流程"""

今日思维导图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141380.shtml

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

相关文章

什么是状态机?

什么是状态机&#xff1f; 定义 我们先来给出状态机的基本定义。一句话&#xff1a; 状态机是有限状态自动机的简称&#xff0c;是现实事物运行规则抽象而成的一个数学模型。 先来解释什么是“状态”&#xff08; State &#xff09;。现实事物是有不同状态的&#xff0c;例…

Spark SQL 每年的1月1日算当年的第一个自然周, 给出日期,计算是本年的第几周

一、问题 按每年的1月1日算当年的第一个自然周 (遇到跨年也不管&#xff0c;如果1月1日是周三&#xff0c;那么到1月5号&#xff08;周日&#xff09;算是本年的第一个自然周, 如果按周一是一周的第一天) 计算是本年的第几周&#xff0c;那么 spark sql 如何写 ? 二、分析 …

P6入门:项目初始化9-项目详情之资源 Resource

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…

npm install导致的OOM解决方案

文章目录 问题记录解决方法Linux重启排查方法 如何排查Linux自动重启的原因 问题记录 我在华为云服务器配置npm开发环境的时候&#xff0c; SSH远程连接一直掉线&#xff0c;无奈提了工单&#xff0c;被告知是NPM install导致的OOM问题。无语了&#xff0c;破NPM还有这个问题呢…

SOME/IP学习笔记2

1. SOME/IP 协议 SOME/IP目前支持UDP&#xff08;用户传输协议&#xff09;和TCP&#xff08;传输控制协议&#xff09;&#xff0c; PS:UDP和TCP区别如下 TCP面向连接的&#xff0c;可靠的数据传输服务&#xff1b;UDP面向无连接的&#xff0c;尽最大努力的数据传输服务&…

详细推导MOSFET的跨导、小信号模型、输出阻抗、本征增益

目录 前言 什么是跨导 什么是小信号模型 什么是输入阻抗和输出阻抗 什么是MOS管的输出阻抗 什么是MOS管的本征增益 共源极放大电路的输入和输出阻抗 一些其它MOS拓扑电路的增益 负载为恒流源 负载为二极管 前言 相信很多人在学习集成电路领域的时候 都对MOS管的…

Python 框架学习 Django篇 (十) Redis 缓存

开发服务器系统的时候&#xff0c;程序的性能是至关重要的。经过我们前面框架的学习&#xff0c;得知一个请求的处理基本分为接受http请求、数据库处理、返回json数据&#xff0c;而这3个部分中就属链接数据库请求的响应速度最慢&#xff0c;因为数据库操作涉及到数据库服务处理…

[量化投资-学习笔记012]Python+TDengine从零开始搭建量化分析平台-策略回测

上一章节《MACD金死叉策略回测》中&#xff0c;对平安银行这只股票&#xff0c;按照金死叉策略进行了回测。 但通常我们的股票池中有许多股票&#xff0c;每完成一个交易策略都需要对整个股票池进行回测。 下面使用简单的轮询&#xff0c;对整个股票池进行回测。 # 计算单只…

动态规划-构建乘积数组

** 描述 给定一个数组 A[0,1,…,n-1] ,请构建一个数组 B[0,1,…,n-1] ,其中 B 的元素 B[i]A[0]A[1]…*A[i-1]A[i1]…*A[n-1]&#xff08;除 A[i] 以外的全部元素的的乘积&#xff09;。程序中不能使用除法。&#xff08;注意&#xff1a;规定 B[0] A[1] * A[2] * … * A[n-1…

RK3568平台开发系列讲解(Linux系统篇)Linux内核定时器详解

🚀返回专栏总目录 文章目录 一、系统节拍率二、内核定时器简介三、内核定时器API四、延时函数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 Linux 内核中有大量的函数需要时间管理,比如周期性的调度程序、延时程序、对于我们驱动编写者来说最常用的定时器。硬件定…

win11下安装odoo17(conda python11)

win11下安装odoo17 odoo17发行了&#xff0c;据说&#xff0c;UI做了很大改进&#xff0c;今天有空&#xff0c;体验一下 打开官方仓库&#xff1a; https://github.com/odoo/odoo 默认的版本已经变成17了 打开odoo/odoo/init.py&#xff0c;发现对python版本的要求也提高了…

GCN代码讲解

这里写的有点抽象&#xff0c;所以具体的可以参照下面代码块中的注释&#xff1a; def load_data(path"../data/cora/", dataset"cora"):"""Load citation network dataset (cora only for now)"""print(Loading {} datase…

超越任务调度的极致:初探分布式定时任务 XXL-JOB 分片广播

XXL-JOB 是一个分布式任务调度平台&#xff0c;支持分片任务执行。 1. 依赖引入 在项目中引入 XXL-JOB 的相关依赖。通常&#xff0c;你需要在项目的 pom.xml 文件中添加如下依赖&#xff1a; <dependency><groupId>com.xuxueli</groupId><artifactId&…

字符设备驱动基础框架

一、总体框架 1.Linux字符设备驱动工作原理图 2.驱动使用端 3.驱动实现端 二、各部分详解 1.VFS层 1) inode结构体 在Unix/Linux操作系统中&#xff0c;每个文件都由一个inode&#xff08;索引节点&#xff09;来索引。inode是特殊的磁盘块&#xff0c;它们在文件系统创建时…

windows系统用于 SDN 的软件负载均衡器 (SLB)

适用于&#xff1a;Azure Stack HCI 版本 22H2 和 21H2&#xff1b;Windows Server 2022、Windows Server 2019、Windows Server 2016 软件负载均衡器包括哪些内容&#xff1f; 软件负载均衡器提供以下功能&#xff1a; 适用于北/南和东/西 TCP/UDP 流量的第 4 层 (L4) 负载均…

聚观早报 |京东11.11公布成绩单;2023数字科技生态大会

【聚观365】11月13日消息 京东11.11公布成绩单 2023数字科技生态大会 TikTok深受英国中小企业青睐 周鸿祎称大模型2年内可“进”智能汽车 双11全国快递业务量达 6.39 亿件 京东11.11公布成绩单 京东11.11公布成绩单&#xff1a;截至11月11日晚23:59&#xff0c;2023年京东…

Docker 中的端口

Docker 中的端口 0.0.0.0:8080->80/tcp &#xff0c;主机&#xff08;即运行 Docker 的机器&#xff09;监听8080端口&#xff0c;如果有请求转发到容器的 80 端口上去。 详细解释一下&#xff1a; 0.0.0.0:8080->80/tcp &#xff1a;这是一个端口映射规则。 0.0.0.0:80…

【中间件篇-Redis缓存数据库06】Redis主从复制/哨兵 高并发高可用

Redis高并发高可用 复制 在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他机器&#xff0c;满足故障恢复和负载均衡等需求。Redis也是如此&#xff0c;它为我们提供了复制功能&#xff0c;实现了相同数据的多个Redis 副本。复制功能是高可用Re…

SparkSQL之Analyzed LogicalPlan生成过程

经过AstBuilder的处理&#xff0c;得到了Unresolved LogicalPlan。该逻辑算子树中未被解析的有UnresolvedRelation和UnresolvedAttribute两种对象。Analyzer所起到的主要作用就是将这两种节点或表达式解析成有类型的&#xff08;Typed&#xff09;对象。在此过程中&#xff0c;…

打开word文档报错,提示HRESULT 0x80004005 位置: 部分: /word/comments.xml,行: 0,列: 0

某用户遇到这样一个奇怪的问题&#xff0c;就是回复完word的批注后&#xff0c;保存文档再打开就会报错&#xff0c;提示很抱歉&#xff0c;无法打开XXX&#xff0c;因为内容有问题。&#xff0c;详细信息提示HRESULT 0x80004005 位置: 部分: /word/comments.xml,行: 0,列: 0 c…