第54天:django学习(三)

页面上的增删改查

        创建一个django项目(使用django3版本)day54——dj,并创建应用app01

        在models.py文件中创建表

class UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=32)gender = models.CharField(max_length=32)

        迁移数据库到db.sqlite3

用户列表展示

        在urls.py文件中配置路由

from django.contrib import admin
from django.urls import path
from app01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('userlist/', views.userlist)
]

        视图文件view.py

from django.shortcuts import render, HttpResponse, redirect
from app01 import models# Create your views here.def userlist(request):user_list = models.UserInfo.objects.all()return render(request, 'user_list.html', locals())

         模板文件user_list.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style></style><script src="/static/js/jquery_3.7.1_jquery.min.js"></script><link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css"><script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container"><div class="row"><h1 class="text-center">用户列表</h1><a href="" class="btn btn-success">添加</a><table class="table table-striped table-hover table-bordered"><thead><tr><td>ID</td><td>username</td><td>password</td><td>gender</td><td>action</td></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="" class="btn btn-success">修改</a>&nbsp;&nbsp;&nbsp;<a href="" class="btn btn-danger">删除</a></td></tr>{% endfor %}</tbody></table></div>
</div>
</body>
</html

用户列表的修改功能

        在路由文件中添加路由

path('edit/', views.edit),

        在视图文件view.py中添加edit方法

def edit(request):edit_id = request.GET.get('id')edit_obj = models.UserInfo.objects.filter(id=edit_id).first()if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')gender = request.POST.get('gender')print(username, password, gender)affect_rows = models.UserInfo.objects.filter(id=edit_id).update(username=username, password=password,gender=gender)return redirect('/userlist/')return render(request, 'edit.html', locals())

         在模板文件user_list.html中添加路径

<a href="/edit/?id={{user.id}}" class="btn btn-success">修改</a>&nbsp;&nbsp;&nbsp;

          添加模板文件edit.html  

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style></style><script src="/static/js/jquery_3.7.1_jquery.min.js"></script><link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css"><script src="/static/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" 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>

用户列表的删除功能

        在路由文件中添加路由

path('delete/', views.delete),

        在视图文件view.py中添加delte方法

def delete(request):del_id = request.GET.get('id')del_obj = models.UserInfo.objects.filter(id=del_id).delete()return redirect('/userlist/', locals())

        在模板文件user_list.html中添加路径

<a href="/delete/?id={{ user.id }}" class="btn btn-danger">删除</a>

用户列表的添加功能

         在路由文件中添加路由

path('add/', views.delete),

        在视图文件view.py中添加delte方法

def add(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')gender = request.POST.get('gender')affect_rows = models.UserInfo.objects.create(username=username, password=password, gender=gender)return redirect('/userlist/', locals())return render(request, 'add.html')

         在模板文件user_list.html中添加l路径

<a href="/add/" class="btn btn-success">添加</a>

        添加模板文件add.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style></style><script src="/static/js/jquery_3.7.1_jquery.min.js"></script><link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css"><script src="/static/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><div class="form-group"><input type="submit" class="btn btn-info btn-block" value="添加"></div></form></div>
</div>
</body>
</html>

创建表关系

        在models.py文件中创建表关系

"""图书表"""
class Book(models.Model):title = models.CharField(max_length=64)price = models.DecimalField(max_digits=8, decimal_places=2)"""对于外键字段关系,会自动帮我们拼接_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的请求生命周期流程图

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

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

相关文章

Ribbon组件的负载均衡原理

原因背景 spring cloud的底层负载均衡是采用Ribbon组件&#xff0c;我们将user-service服务注册到eureka-server中&#xff0c;那么当我们在另一个服务的代码层面请求远程调用API接口http://user-service/users/5时&#xff0c;程序代码如何解析远程调用的user-service服务名转…

快速排序的非递归实现

上期我们实现了快速排序的递归实现&#xff0c;但是我们知道如果递归深度太深&#xff0c;栈就会溢出&#xff0c;所以我们本期将为大家讲述快速排序的非递归实现&#xff0c;我们需要用到栈的数据结构&#xff0c;我们知道栈中的数据全是在堆区开辟的空间&#xff0c;堆的空间…

VS2015编译GDAL3.2.0+opencl+C#

参考借鉴https://www.cnblogs.com/litou/p/15004877.html 参考借鉴https://www.cnblogs.com/xiaowangba/p/6313903.html 参考借鉴gdal、proj、geos、sqlite等在VS2015下编译和配置_vs2015编译sqlite3-CSDN博客 参考借鉴Windows下GDAL3.1.2编译 (VS2015)_gdal windows编译-CS…

【动手学深度学习】(十)PyTorch 神经网络基础+GPU

文章目录 一、层和块1.自定义块2.顺序块3.在前向传播函数中执行代码 二、参数管理1.参数访问2.参数初始化3.参数绑定 三、自定义层1.不带参数的层2.带参数的层 四、读写文件1.加载和保存张量2.加载和保存模型参数五、使用GPU [相关总结]state_dict() 一、层和块 为了实现复杂神…

机器学习---线性回归案例

1、梯度下降法调节参数 2、模拟过拟合 训练模型都会将数据集分为两部分&#xff0c;一般会将0.8比例的数据集作为训练集&#xff0c;将0.2比例的数据集作为测试集&#xff0c;来训练模型。模型过拟合就是训练出来的模型在训练集上表现很好&#xff0c;但是在测试集上表现较差的…

架构师进阶,微服务设计与治理的 16 条常用原则

今天将从存储的上一层「服务维度」学习架构师的第二项常用能力 —— 微服务设计与治理。 如何设计合理的微服务架构&#xff1f; 如何保持微服务健康运行&#xff1f; 这是我们对微服务进行架构设计过程中非常关注的两个问题。 本文对微服务的生命周期定义了七个阶段&#x…

状态机的练习:按键控制led灯

设计思路&#xff1a; 三个按键控制led输出。 三个按键经过滤波(消抖)&#xff0c;产生三个按键标志信号。 三个led数据的产生模块&#xff08;流水&#xff0c;跑马&#xff0c;闪烁模块&#xff09;&#xff0c;分别产生led信号。 这六路信号&#xff08;三路按键信号&am…

Spring Boot 3.0 : 集成flyway数据库版本控制工具

目录 Spring Boot 3.0 : 集成flyway数据库版本控制工具flyway是什么为什么使用flyway主要特性支持的数据库&#xff1a; flyway如何使用spring boot 集成实现引入依赖配置sql版本控制约定3种版本类型 运行SpringFlyway 8.2.1及以后版本不再支持MySQL&#xff1f; 个人主页: 【⭐…

5组10个共50个音频可视化效果PR音乐视频制作模板

我们常常看到的图形跟着音乐跳动&#xff0c;非常有节奏感&#xff0c;那这个是怎么做到的呢&#xff1f;5组10个共50个音频可视化效果PR音乐视频制作模板满足你的制作需求。 PR音乐模板|10个音频可视化视频制作模板05 https://prmuban.com/36704.html 10个音频可视化视频制作…

Google Bard vs. ChatGPT 4.0:文献检索、文献推荐功能对比

在这篇博客中&#xff0c;我们将探讨和比较四个不同的人工智能模型——ChatGPT 3.5、ChatGPT 4.0、ChatGPT 4.0插件和Google Bard。我们将通过三个问题的测试结果来评估它们在处理特定任务时的效能和响应速度。 导航 问题 1: 统计自Vehicle Routing Problem (VRP)第一篇文章发…

人工智能-异步计算

异步计算 今天的计算机是高度并行的系统&#xff0c;由多个CPU核、多个GPU、多个处理单元组成。通常每个CPU核有多个线程&#xff0c;每个设备通常有多个GPU&#xff0c;每个GPU有多个处理单元。总之&#xff0c;我们可以同时处理许多不同的事情&#xff0c;并且通常是在不同的…

【K8S】Hello World

文章目录 1 搭建本地测试环境1.1 安装 docker和 Colima1.2 安装 minikube1.3 启动minikube1.4 安装 kubectl1.5 注册 docker hub镜像仓库 2 k8s核心资源概念2.1 Pod2.2 Deployment2.3 Service2.4 Ingress 参考资料 1 搭建本地测试环境 本文以 mac os为例 1.1 安装 docker和 C…