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.mzph.cn/news/674483.shtml

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

相关文章

springboot基础案例(二)

文章目录 前言一.需求分析: 分析这个项目含有哪些功能模块二.库表设计(概要设计): 1.分析系统有哪些表 2.分析表与表关系 3.确定表中字段(显性字段 隐性字段(业务字段))2.1 创建一个库: ems-thymeleaf2.2 创建 2张表三.编码(环境搭建)1.创建一个springboot项目 项目名字: ems-t…

004集—二调数据库标注分子分母模式及统计净面积——arcgis

二调数据库中分子分母标注方法为&#xff1a; 表达式如下&#xff1a; "<und>"& [TBBH] &"</und>" &vbnewline& [DLBM] "<und>"&[DLBM]&"</und>" &vbnewline& [DLMC] &quo…

一文读懂:MybatisPlus从入门到进阶

快速入门 简介 在项目开发中&#xff0c;Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句&#xff0c;MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档&#xff1a;https://www.baomidou.com/&#xff0c;感谢苞米豆和黑马程序员。 Mybat…

【学网攻】 第(23)节 -- PPP协议

系列文章目录 目录 系列文章目录 文章目录 前言 一、PPP协议是什么&#xff1f; 二、实验 1.引入 实验目的 实验背景你是某公司的网络管理员&#xff0c;现在需要与另一个公司进行通信,需要你配置PPP协议保证双方发送的人是真正的而非黑客 技术原理 实验步骤新建Pack…

Midjourney提示词风格调试测评

在Midjourney中提示词及风格参数的变化无疑会对最终的作品产生影响&#xff0c;那影响具体有多大&#xff1f;今天我我们将通过一个示例进行探究。 示例提示词&#xff1a; 计算机代码海洋中的黄色折纸船&#xff08;图像下方&#xff09;风格参考:金色长发的女人&#xff0c…

单片机——ISP下载、ICP下载、IAP下载

文章目录 ISPICPIAP ISP 在线系统编程&#xff0c;使用引导程序加上外围UART/SPI接口烧录 其本质是将程序的hex文件烧录到板子里的过程 可以使用flymcu这个软件 System memory是STM32在出厂时&#xff0c;由ST在这个区域内部预置了一段BootLoader&#xff0c; 也就是我们常说…

【C++】C++的简要介绍

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 3.3.3 面试题 4. 如何学习C4.1 别人怎么学&#xff1f; 1. 什么是C C语言是结构化和模块化的语言&…

深度分析一款新型Linux勒索病毒

前言 DarkRadiation勒索病毒是一款全新的Linux平台下的勒索病毒&#xff0c;2021年5月29日首次在某平台上发布了此勒索病毒的相关的信息&#xff0c;6月中旬趋势科技针对这个新型的勒索病毒进行了相关的分析和报道。 DarkRadiation勒索病毒采用Bash脚本语言编写实现&#xff0…

最好的 4 个 Android 屏幕解锁锁软件免费下载

实际上&#xff0c;如今每个 Android 智能手机用户都将手机设置为图案锁定。此功能可以保护隐私&#xff0c;特别是当用户不在打电话时。通过绘制锁定屏幕图案&#xff0c;用户可以解锁手机&#xff0c;然后访问其主屏幕。如果用户被锁定在电话模式之外会发生什么&#xff1f;“…

基于SpringBoot3的快速迭代平台

SpringBoot3的快速开发平台 前言一、技术栈二、项目结构三、总结 前言 MateBoot是一个基于SpringBoot3的快速开发平台&#xff0c;采用前后端分离的模式&#xff0c;前端采用Element Plus组件&#xff0c;后端采用SpringBoot3、Sa-token、Mybatis-Plus、Redis、RabbitMQ、Fast…

华为第二批难题一:基于预训练AI模型的元件库生成

我的理解&#xff1a;华为的这个难道应该是想通过大模型技术&#xff0c;识别元件手册上的图文内容&#xff0c;与现有建库工具结合&#xff0c;有潜力按标准生成各种库模型。 正好&#xff0c;我们正在研究&#xff0c;利用知识图谱技术快速生成装配模型&#xff0c;其中也涉…

图像处理入门:OpenCV的基础用法解析

图像处理入门&#xff1a;OpenCV的基础用法解析 引言OpenCV的初步了解深入理解OpenCV&#xff1a;计算机视觉的开源解决方案什么是OpenCV&#xff1f;OpenCV的主要功能1. 图像处理2. 图像分析3. 结构分析和形状描述4. 动态分析5. 三维重建6. 机器学习7. 目标检测 OpenCV的应用场…

java_error_in_pycharm.hprof文件是什么?能删除吗?

java_error_in_pycharm.hprof文件是什么&#xff1f;能删除吗&#xff1f; &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;hprof格式文件介绍&#x1f333;&#x1f333;java_error_in_pycharm.hprof文件什么情况下能删除&#x1f333;&…

【机器学习】数据清洗之识别缺失点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号 code review! 文章目录 Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号1.expect2.bash 1.expect 在Expect脚本中&#xff0c;你可以使用expect来监听程序输出&#xff0c;…

Github 2024-02-08 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-08统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Ruby项目1HTML项目1Python项目1Scala项目1PLpgSQL项目1Rust项目1NASL项目1C项目1TypeScript项目1非开发语言项目…

谷歌seo搜索引擎优化有什么思路?

正常做seo哪有那么多思路&#xff0c;其实就那么几种方法&#xff0c;无非就关键词&#xff0c;站内优化&#xff0c;外链&#xff0c;可以说万变不离其宗&#xff0c;但如果交给我们&#xff0c;你就可以实现其他的思路&#xff0c;或者说玩法 收录可以说是一个网站的基础&…

【Linux】vim的基本操作与配置(下)

Hello everybody!今天我们继续讲解vim的操作与配置&#xff0c;希望大家在看过这篇文章与上篇文章后都能够轻松上手vim! 1.补充 在上一篇文章中我们说过了&#xff0c;在底行模式下set nu可以显示行号。今天补充一条&#xff1a;set nonu可以取消行号。这两条命令大家看看就可…

10个常考的前端手写题,你全都会吗?(上)

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

[office] excel表格怎么绘制股票的CCI指标- #媒体#学习方法#笔记

excel表格怎么绘制股票的CCI指标? excel表格怎么绘制股票的CCI指标&#xff1f;excel表格中想要绘制一个股票cci指标&#xff0c;该怎么绘制呢&#xff1f;下面我们就来看看详细的教程&#xff0c;需要的朋友可以参考下 CCI指标是一种在股票&#xff0c;贵金属&#xff0c;货…