Django学习记录02

news2024/9/24 18:21:48

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 int
        size 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.coloradmin.cn/o/1440150.html

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

相关文章

[职场] 智能材料与结构专业的就业前景 #经验分享#学习方法

智能材料与结构专业的就业前景 智能材料与结构专业是面向国家智能制造强国战略&#xff0c;面向地方经济新旧动能转换需求&#xff0c;学习智能材料与结构的基础理论及基本知识&#xff0c;接受智能材料制备、组织分析、性能测试、智能材料系统集成技能的基本训练&#xff0c;…

春运一票难求,候补抢票显威,如何设计一个候补订单系统?

春运一票难求&#xff0c;候补官方抢票 最近春节火车一票难求&#xff0c;12306系统的候补购票是一种官方支持的抢票方式。在首日票已售罄时&#xff0c;立即提交候补请求&#xff0c;系统会优先考虑候补乘客的需求。根据成功率灵活选择是否候补购票。 当旅客在12306网站购票&…

mac协议远程管理软件:Termius for Mac 8.4.0激活版

Termius是一款远程访问和管理工具&#xff0c;旨在帮助用户轻松地远程连接到各种服务器和设备。它适用于多种操作系统&#xff0c;包括Windows、macOS、Linux和移动设备。 该软件提供了一个直观的界面&#xff0c;使用户可以通过SSH、Telnet和Mosh等协议连接到远程设备。它还支…

考研数据结构笔记(3)

顺序表存储结构 存储结构顺序结构定义基本操作的实现静态分配问题 动态分配代码功能 顺序表的特点: 顺序表小结顺序表的插入删除插入删除小结 顺序表的查找按位查找按值查找小结 存储结构 顺序结构 定义 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列(每个数据元素…

Vue + Element UI el-table + sortablejs 行、列拖拽排序

实现Element UI中的el-table表格组件的行和列的拖拽排序 使用 Vue3 Element Plus UI sortablejs 安装sortablejs pnpm install sortablejs行拖拽 基本实现 效果 <script setup> import { onMounted, ref } from "vue"; import Sortable from "sort…

Flink流式数据倾斜

1. 流式数据倾斜 流式处理的数据倾斜和 Spark 的离线或者微批处理都是某一个 SubTask 数据过多这种数据不均匀导致的&#xff0c;但是因为流式处理的特性其中又有些许不同 2. 如何解决 2.1 窗口有界流倾斜 窗口操作类似Spark的微批处理&#xff0c;直接两阶段聚合的方式来解决…

【stm32】hal库学习笔记-ADC模数转换(超详细)

【stm32】hal库学习笔记-ADC模数转换&#xff08;超详细&#xff09; 本篇章介绍了ADC实现电压检测的三种方式 ADC原理及选型 ADC将连续的模拟电压信号转换为二进制的数字信号 选型参数 速度&#xff08;采样频率&#xff09; 功耗 精度 转换原理 ADC hal库驱动函数 普通…

【EEG信号处理】对信号进行模拟生成

生成信号的目的还是主要是为了学习和探究后面的分析方法&#xff1b;本文主要是对方法进行整理 瞬态 transient 瞬态信号是指的是一瞬间信号上去了&#xff0c;这种情况我们可以用在时域上高斯模拟 peaktime 1; % seconds width .12; ampl 9; gaus ampl * exp( -(EEG.tim…

RocketMQ下载安装及基本使用

目录 消息队列的作用 消息队列的优势 应用解耦 异步提速 削峰填谷 RocketMQ介绍 RocketMQ特点 RocketMQ安装下载(4.9.5版本) RocketMQ启动可视化管理服务 RocketMQ实现基本消息收发 消息队列的作用 队列是一种FIFO先进先出的数据结构。消息则是跨进程传递的数据。一个…

多线程JUC:多线程的实现和常用成员方法(守护、礼让、插入线程)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;首期文章 &#x1f4da;订阅专栏&#xff1a;多线程&JUC 希望文章对你们有所帮助 JUC的学习也是需要一些计算机、操作系统的…

【算法设计与分析】求根节点到叶节点数字之和

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数…

高可用 k8s 1.29 一键安装脚本, 丝滑至极

博客原文 文章目录 集群配置配置清单集群规划集群网络规划 环境初始化主机配置 配置高可用ApiServer安装 nginx安装 Keepalived 安装脚本需要魔法的脚本不需要魔法的脚本配置自动补全加入其余节点 验证集群 集群配置 配置清单 OS&#xff1a; ubuntu 20.04kubernetes&#xf…

HarmonyOS class类对象基础使用

按我们之前的写法 就是 Entry Component struct Dom {p:Object {name: "小猫猫",age: 21,gf: {name: "小小猫猫",age: 18,}}build() {Row() {Column() {// ts-ignoreText(this.p.gf.name)}.width(100%)}.height(100%)} }直接用 Object 一层一层往里套 这…

MySQL用心总结

大家好&#xff0c;好久不见&#xff0c;今天笔者用心一步步写一份mysql的基础操作指南&#xff0c;欢迎各位点赞收藏 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath mysqld_bin_path(注意&#xff1a;等号与值之间有空格) mysql -h 地址 -…

【Flink状态管理(二)各状态初始化入口】状态初始化流程详解与源码剖析

文章目录 1. 状态初始化总流程梳理2.创建StreamOperatorStateContext3. StateInitializationContext的接口设计。4. 状态初始化举例&#xff1a;UDF状态初始化 在TaskManager中启动Task线程后&#xff0c;会调用StreamTask.invoke()方法触发当前Task中算子的执行&#xff0c;在…

如何从 iPhone 上恢复永久删除的照片

您的 iPhone 上缺少照片吗&#xff1f;讽刺的是&#xff0c;iPhone 的许多高级功能可能正是这个问题如此普遍的原因。幸运的是&#xff0c;还有很多方法可以从 iPhone 恢复已删除的照片&#xff0c;具体取决于您设备的设置方式。 本文涵盖了所有这些内容。该过程根据您的具体情…

git安装配置

1、下载安装 下载地址 2、配置git用户 git config --global user.name "yw" git config --global user.email "88888qq.com" 3、git init 初始化 4、生成ssh密钥 mkdir .ssh //创建文件夹cd .ssh //进入新建文件夹 ssh-keygen -t rsa // 输入密钥文…

计算机服务器中了halo勒索病毒如何处理,halo勒索病毒解密数据恢复

网络技术的不断发展与应用&#xff0c;为企业的生产生活提供了极大便利&#xff0c;但网络数据安全威胁无处不在&#xff0c;近日&#xff0c;云天数据恢复中心接到某连锁超市求助&#xff0c;企业计算机服务器被halo勒索病毒攻击&#xff0c;导致计算机系统瘫痪&#xff0c;无…

将xyz格式的GRACE数据转成geotiff格式

我们需要将xyz格式的文件转成geotiff便于成图&#xff0c;或者geotiff转成xyz用于数据运算&#xff0c;下面介绍如何实现这一操作&#xff0c;采用GMT和matlab两种方法。 1.GMT转换 我们先准备一个xyz文件&#xff0c;这里是一个降水文件。在gmt中采用以下的语句实现xyz转grd…

【Spring】GoF 之工厂模式

一、GoF 23 设计模式简介 设计模式&#xff1a;一种可以被重复利用的解决方案 GoF&#xff08;Gang of Four&#xff09;&#xff0c;中文名——四人组 《Design Patterns: Elements of Reusable Object-Oriented Software》&#xff08;即《设计模式》一书&#xff09;&…