计算机基础知识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.hqwc.cn/news/171346.html

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

相关文章

sass 生成辅助色

背景 一个按钮往往有 4 个状态。 默认状态hover鼠标按下禁用状态 为了表示这 4 个状态&#xff0c;需要设置 4 个颜色来提示用户。 按钮类型一般有 5 个&#xff1a; 以 primary 类型按钮为例&#xff0c;设置它不同状态下的颜色&#xff1a; <button class"btn…

ros2_control的简单应用

文章目录 简介插件实现函数介绍代码 调用原理局限性 简介 在利用moveit_setup_assistant配置我们自己机械手后&#xff0c;当运行demo.launch.py时&#xff0c;会实例化一个moveit对象以及一个基于ros2_control的、虚拟的控制对象&#xff0c;从而可以实现一个完整的控制闭环。…

Rust 中的引用与借用

目录 1、引用与借用 1.1 可变引用 1.2 悬垂引用 1.3 引用的规则 2、slice 类型 2.1 字符串字面量其实就是一个slice 2.2 总结 1、引用与借用 在之前我们将String 类型的值返回给调用函数&#xff0c;这样会导致这个String会被移动到函数中&#xff0c;这样在原来的作用域…

【PC】开发者日志:竞技比赛验证系统强化

各位玩家大家好&#xff01;欢迎收看本期开发者日志。 在11月1日发布的第26赛季第2轮更新公告中&#xff0c;我们提到了有关强化比赛验证系统的内容。想必各位玩家一定会对我们加强验证系统的背景和意图感到好奇&#xff0c;为此我们想通过今天这篇反作弊开发者日志来向大家更详…

考研分享第1期 | 末9生物跨专业考研北京大学电子信息404分经验分享

全文概览 一、个人信息 二、关于考研的经验分享 三、最后的小Tips 一、个人信息 姓名&#xff1a;Jackson 本科院校&#xff1a;某末流985生物专业 报考院校&#xff1a;北京大学电子信息专业 择校意向&#xff1a;北航计算机、人大高瓴、复旦软院、清华大学深研院、北…

初认识vue,v-for,v-if,v-bind,v-model,v-html等指令

vue 一.vue3介绍 1.为什么data是函数而不是对象? 因为vue是组件开发,组件会多次复用,data如果是对象,多次复用是共享,必须函数返回一个新的对象 1. 官网初识 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS …

相机以及其它传感器传感器

深度相机点云质量对比 比较点云质量时需要注意的点&#xff1a; 1.对特殊材质、颜色的检测效果&#xff1a;透明塑料、金属、毛玻璃、高反光物体&#xff08;镜子、水坑&#xff09;、吸光物体&#xff08;黑色物体&#xff09;。 2.特殊环境&#xff1a;雨、雪、雾、明暗交替位…

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

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

Rust-使用dotenvy加载和使用环境变量

系统的开发&#xff0c;测试和部署离不开环境变量&#xff0c;今天分享在Rust的系统开发中&#xff0c;使用dotenvy来读取和使用环境变量。 安装 cargo add dotenvy dotenv_codegen 加载环境变量 use dotenvy::dotenv;fn main() {dotenv().expect(".env不存在");…

mysql数据库时间

记录MySQL今天又一个新的问题&#xff1a; 场景&#xff1a;nodejs后台容器部署 问题原因&#xff1a;纯属好心办坏事&#xff0c;由于考虑了时区&#xff08;现在看来纯属多余&#xff09;&#xff0c;在写入时间时使用了time_str.toLocaleString("chinese", { ti…

眼科动态图像处理系统使用说明(2023-8-11 ccc)

眼科动态图像处理系统使用说明 2023-8-11 ccc 动态眼科图像捕捉存贮分析与传输系统&#xff0c;是由计算机软件工程师和医学专家组结合&#xff0c;为满足医院临床工作的需要&#xff0c;在2000年开发的专门用于各类眼科图像自动化分析、处理和传输的软件系统。该系统可以和各…

【算法】新的开始(Kruskal算法,虚拟源点)

题目 发展采矿业当然首先得有矿井&#xff0c;小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井&#xff0c;但他似乎忘记了考虑矿井供电问题。 为了保证电力的供应&#xff0c;小 FF 想到了两种办法&#xff1a; 在矿井 i 上建立一个发电站&#xff0c;费用…