Django学习记录02

1.请求与响应

1.1get与post的区别

get 一般是从url输入地址,会调用get请求
post 一般是内部数据传输
# get请求
def something(request):# req是一个对象,封装了用户发送过来的所有请求相关数据# 1.获取请求方式  http://localhost:8000/something# print(request.method)# 2.在url上传递值  http://localhost:8000/something/?n1=123&n2=999# print(request.GET)
# post请求
直接利用表单传输,而不需要使用url<form method="post" action="/login/">
{#    django的安全性措施,必须加该句话#}{% csrf_token %}<input type="text" name="user" placeholder="用户名"><input type="password" name="pwd" placeholder="密码"><input type="submit" value="提交"><font style="color: red"> {{ error }}</font>
</form>

1.2 Django响应的几种方式

def something(request):req是一个对象,封装了用户发送过来的所有请求相关数据响应 1.响应请求者的请求return HttpResponse("返回浏览器,响应!")响应 2.读取html的内容+渲染,返还给浏览器字符串return render(request, "something.html")响应 3.重定向return redirect("http://www.baidu.com")

重定向

在这里插入图片描述

1.浏览器发出请求
2.django响应,告诉浏览器重定向的位置
3.浏览器向http://www.baidu.com发出请求
4.http://www.baidu.com响应浏览器

1.3 请求与相应案例分析

登录页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>登陆页面</h1>
<form method="post" action="/login/">
{#    django的安全性措施,必须加该句话#}{% csrf_token %}<input type="text" name="user" placeholder="用户名"><input type="password" name="pwd" placeholder="密码"><input type="submit" value="提交"><font style="color: red"> {{ error }}</font>
</form>
</body>
</html>

{% csrf_token %} 常见的Django安全性方式

DJango实现

1.接收浏览器请求与响应若是在url中输入访问地址(get请求),则响应登陆界面若为表单的post请求,则利用request.POST获取接收表单传来的字典封装的数据,进行比对
2.对于post请求,进行比对后,比对成功响应浏览器,重定向;比对失败,返回登陆页面
def login(request):# get 请求,url所请求的# post请求,内部的数据传输error = ''# 在url中输入地址(get请求),则返回登陆页面if request.method == 'GET':return render(request, 'login.html', {"error": error})# 若是post请求,则获取数据(返回一个字典{"name":"value"})print(request.POST)# 获取数据username = request.POST.get("user")password = request.POST.get("pwd")if username == 'admin' and password == '123':return redirect('https://www.chinaunicom.com/')error = '登陆失败'return render(request, 'login.html', {"error": error})

2.数据库操作

2.1orm框架的应用原理

在这里插入图片描述

安装第三方模块

pip install mysqlclient

作用

  • 创建、修改、数据库中的表(不需要sql语句)
  • 增删改查表中数据(不需要sql语句)

2.2 django连接数据库

在settings.py文件中进行配置和修改。

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'db1',  # 数据库名称'USER': 'root','PASSWORD': 'root','HOST': 'localhost','PORT': 3306,}
}

在这里插入图片描述

2.3django操作表

  • 创建表

在models.py文件中

class UserInfo(models.Model):name = models.CharField(max_length=32)password = models.CharField(max_length=64)age = models.IntegerField()# 新增列时(已有数据),执行该程序,必须确定新增属性的默认值size = models.IntegerField(default=2)

本质

    自动创建名为 app_类名(自动小写) 的表creat table app01_userinfo(id bigint auto_increment primary key,name varchar(32),password varchar(64),age intsize int default=2)

执行命令

python manage.py makemigrations
python manage.py migrate
  • 删除表

直接删除models.py中相关表信息或相关列信息,重新执行命令即可

执行命令

python manage.py makemigrations
python manage.py migrate
  • 修改表

在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:设置默认值

age = models.IntegerField(default=2)

执行命令

python manage.py makemigrations
python manage.py migrate

2.4数据库表的增删改查操作

引用表的两种方式
1.表名.
from app01.models import UserInfo
UserInfo.xxx
2.
import app01.models
models.UserInfo.xxx

2.4.1增加操作

######  插入数据  ######UserInfo.objects.create(name='殷琪尧', password='123456', age=10, size=50)UserInfo.objects.create(name='yyy', password='12345622', age=15)UserInfo.objects.create(name='琪尧', password='123222456', age=20)本质:
insert into app01_userinfo(name, password, age, size) values ('殷琪尧','123456',10,50);
insert into app01_userinfo(name, password, age) values ('yyy','12345622',10);
insert into app01_userinfo(name, password, age) values ('琪尧','123222456',10);

2.4.2查询操作

返回符合条件的所有数据 [数据对象,数据对象,数据对象] QuerySet类型

data_list = UserInfo.objects.filter(id=1)
for data in data_list:print(data.name, data.age, data.size)# 返回所有数据
data_list2 = UserInfo.objects.all()
for data1 in data_list2:print(data1.name, data1.age, data1.size)# 返回符合条件的第一条数据
data_list3 = UserInfo.objects.filter(size=2).first()
print(data_list3.name, data_list3.age, data_list3.size)#  data_list均为[数据对象,数据对象,数据对象] QuerySet类型
本质
select 'name',age,size from app01_userinfo where id=1;
select * from app01_userinfo;
select * from app01_userinfo where size=2;

2.4.3删除数据

######  删除数据  #####
UserInfo.objects.filter(id=3).delete()
UserInfo.objects.all().delete()
本质
delete from app01_userinfo where id=3;
delete from app01_userinfo

2.4.4更新数据

##### 更新数据  #####
UserInfo.objects.filter(id=3).update(name="火麒麟")
UserInfo.objects.all().update(password = "999999")
本质
update app01_userinfo set name='火麒麟' where id=3;
update app01_userinfo set password='999999'

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

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

相关文章

Go 语言 for 的用法

For statements 本文简单翻译了 Go 语言中 for 的三种用法&#xff0c;可快速学习 Go 语言 for 的使用方法&#xff0c;希望本文能为你解开一些关于 for 的疑惑。详细内容可见文档 For statements。 For statements with single condition 在最简单的形式中&#xff0c;只要…

centos7编译安装redis

一、环境 系统&#xff1a;CentOS Linux release 7.9.2009 (Core) redis版本&#xff1a;redis 6.0.6 二、安装及部署 当前最新稳定版本是redis 6.0.6 国内网址&#xff1a;http://www.redis.cn redis下载列表&#xff1a;http://download.redis.io/releases/ 下载 wge…

机器学习--K-近邻算法常见的几种距离算法详解

文章目录 距离度量1 欧式距离(Euclidean Distance)2 曼哈顿距离(Manhattan Distance)3 切比雪夫距离 (Chebyshev Distance)4 闵可夫斯基距离(Minkowski Distance)5 标准化欧氏距离 (Standardized EuclideanDistance)6 余弦距离(Cosine Distance)7 汉明距离(Hamming Distance)【…

14.scala隐式转换

目录 概述实践代码执行结果 结束 概述 隐式转换&#xff1a;偷偷的(隐式)对现有功能进行增强(转换) 实践 代码 package com.fun.scalaimport java.io.File import scala.io.Sourceobject ImplicitApp {def main(args: Array[String]): Unit {// implicit 2 to 等价 &…

K8S之Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的Pod状态PendingPodScheduledUnschedulablePodInitializingImagePullBackOffInitializedRunningErrorCrashLoopBackOffTerminatingSucceededFailedEvictedUnknown Pod的重启策略使用Always重启策略使用Never重启策略使用OnFailure重启策略(常用) …

go消息队列RabbitMQ - 订阅模式-direct

1.发布订阅 在Fanout模式中&#xff0c;一条消息&#xff0c;会被所有订阅的队列都消费。但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下&#xff1a; 队列与交换机的绑定&#xff0c;不能…

NuxtJs安装Sass后出现ERROR:Cannot find module ‘webpack/lib/RuleSet‘

最近了解NuxtJs时&#xff0c;发现问题比较多&#xff0c;对于初学者来说是件比较头痛的事。这次是安装sass预处理器&#xff0c;通过命令安装后&#xff0c;出现了ERROR&#xff1a;Cannot find module webpack/lib/RuleSet 错误&#xff0c;于是根据之前经验&#xff0c;对版…

解析spritf和sscanf与模拟常用字符串函数strchr,strtok(二)

今天又来继续我们的字符串函数的文章&#xff0c;这也是最后一篇了。希望这两篇文章能让各位理解透字符串函数。 目录 strchr strtok sprintf和sscanf strchr strchr 是一个用于在字符串中查找特定字符首次出现位置的函数。以下是解析和模拟实现 strchr 函数的示例&…

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库&#xff0c;按照以下步骤操作&#xff1a; 构建或安装OSG库 下载OpenSceneGraph源代码&#xff08;如3.0版本&#xff09;并解压。使用CMake配置项目&#xff0c;为Visual Studio生成解决方案文件。通常您需要设置CMake中的…

Bee+SpringBoot稳定的Sharding、Mongodb ORM功能(同步 Maven)

Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee 小巧玲珑&#xff01;仅 860K, 还不到 1M, 但却是功能强大&#xff01; V2.2 (2024春节・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtendtrue) 2. 增强批…

Spring Boot + 七牛OSS: 简化云存储集成

引言 Spring Boot 是一个非常流行的、快速搭建应用的框架&#xff0c;它无需大量的配置即可运行起来&#xff0c;而七牛云OSS提供了稳定高效的云端对象存储服务。利用两者的优势&#xff0c;可以为应用提供强大的文件存储功能。 为什么选择七牛云OSS? 七牛云OSS提供了高速的…

PCIE Order Set

1 Training Sequence Training Sequence是由Order Set(OS) 组成&#xff0c;它们主要是用于bit aligment&#xff0c;symbol aligment&#xff0c;交换物理层的参数。当data_rate 2.5GT or 5GT 它们不会被扰码(scramble)&#xff0c;当date_rate 8GT or higher 根据特殊的规则…

第59讲订单数据下拉实现

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;/*** 订单查询 type值 0 全部订单 1待付款 2 待收货 3 退款/退货* param type* return*/RequestMapping("/list")public R list(Integer type,Integer page,Integer pageSize){System.out.pri…

Golang数据库编程详解 | 深入浅出Go语言原生数据库编程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 Golang学习专栏&#xff1a;https://blog.csdn.net/qq_35716689/category_12575301.html 前言 对数据库…

Vue3编写简单的App组件(二)

一、Vue3页面渲染基本流程 1、入口文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"icon" href"/favicon.ico"><meta name"viewport" content"widthde…

es6中标签模板

之所以写这篇文章&#xff0c;是因为标签模板是一个很容易让人忽略的知识点 首先我们已经非常熟悉模板字符串的使用方法 const name "诸葛亮" const templateString hello, My name is ${name}标签模板介绍 这里的标签模板其实不是模板&#xff0c;而是函数调用…

【CV论文精读】【MVDet】Multiview Detection with Feature Perspective Transformation

0.论文摘要 合并多个摄像机视图进行检测减轻了拥挤场景中遮挡的影响。在多视图检测系统中&#xff0c;我们需要回答两个重要问题。首先&#xff0c;我们应该如何从多个视图中聚合线索&#xff1f;第二&#xff0c;我们应该如何从空间上相邻的位置聚集信息&#xff1f;为了解决…

Java项目管理01-Maven基础

一、Maven的常用命令和生命周期 1.Maven的常用命令使用方式 complie&#xff1a;编译&#xff0c;将java文件编译为class字节码文件 clean&#xff1a;清理&#xff0c;删除字节码文件 test&#xff1a;测试&#xff0c;运行项目中的test类 package&#xff1a;打包&#x…

Leetcode 45. 跳跃游戏 II

本题与55. 跳跃游戏十分类似&#xff0c;区别在于本题是要求出最小的跳跃次数。 在55. 跳跃游戏的框架上&#xff0c;我们需要增加一些东西&#xff1a; 既然要计算最小跳跃次数&#xff0c;就需要用一个变量计数跳跃的次数&#xff1b;需要一次前瞻&#xff0c;来计算之后那次…

3.1 Verilog 连续赋值

关键词&#xff1a;assign&#xff0c; 全加器 连续赋值语句是 Verilog 数据流建模的基本语句&#xff0c;用于对 wire 型变量进行赋值。&#xff1a; 格式如下 assign LHS_target RHS_expression &#xff1b; LHS&#xff08;left hand side&#xff09; 指赋值操作…