Day4

news2024/12/27 13:05:33

请求与响应

请求和响应是Web应用的基本组成部分,它们处理客户端(通常是浏览器)和服务器之间的交互。

注意三个常见的请求和响应就行:

【注意】:

关于重定向:

浏览器向某个网站发来请求,该网站返回了值,然后浏览器再自行去其他地方发送请求。

然后,补充一下关于请求的两种方法~

  1. GET请求

    • 通常用于请求服务器发送资源。

    • 数据通过URL传递,附加在URL后面,形成查询字符串。

    • GET请求可以被缓存、收藏为书签、保留在浏览器历史记录中。

    • 由于数据暴露在URL中,不适合传输敏感信息,如密码或个人信息。

  2. POST请求

    • 通常用于向服务器提交数据进行处理,例如表单提交。

    • 数据在请求体中传递,不会显示在URL中。

    • POST请求不会被缓存,也不会保存在浏览器历史记录中,适合传输敏感信息。

    • 因为POST请求的数据不会显示在URL中,所以它比GET请求更安全。

总的来说,出于安全考虑,当涉及到隐私信息,如密码、个人信息或任何不应公开的数据时,应使用POST方法。GET方法则适用于请求数据,且数据不包含敏感信息的情况。此外,GET请求有长度限制,而POST请求可以传输大量数据

再整个案例练个手~

这是一个极度简洁的登录案例。

登录成功

登录失败

出现下面这种错误,是CSRF Token认证。

这是由于Django多了一层安全机制的校验。

如何解决这个问题呢?

要在HTML中的,form表单里写上一句 {% csrf_token %}即可。

在这里补充一下关于CSRF

CSRF(跨站请求伪造)是一种网络安全攻击,攻击者诱导受害者在不知情的情况下,利用受害者的登录状态向服务器发送恶意请求。

CSRF攻击利用了Web应用的漏洞,通过在用户不知情的情况下,使用用户的登录凭证来执行非法操作。

Django框架提供了CSRF token认证机制来防止这种攻击

其原理就是: Django自动为每个用户会话生成一个唯一的CSRF token,当用户提交表单时,这个token需要包含在表单数据中,作为验证的一部分;当表单提交到服务器,Django会检查提交的CSRF token是否与服务器为当前会话生成的token相匹配。

数据库操作

在一般情况下,我们操作数据库都是得用pymysql的。

而在Django开发中,用它内部提供的ORM框架去操作数据库更简洁。

那么,ORM的最主要的功能就是翻译。将我们写的代码翻译给pymysql,这有利于我们开发时,代码编写的更加简洁。

ORM到底有什么用呢?

  1. 创建、修改和删除数据库中的表。(无需自己写SQL语句)【无法创建数据库】

  2. 操作表中的数据。(无需自己写SQL语句)

ORM框架

我们要如何使用它呢?

在使用前,首先要安装第三方模块。

pip install mysqlclient

然后,开始使用了!

  1. 自己创建数据库

    启动MySQL服务,自己创建数据库。

  2. Django连接数据库

    在settings.py文件里修改配置。
    (1)找到DATABASE

    (2)点击上面网站,去找到包含MySQL的内容

    (3)复制官网代码到settings.py文件里,然后再进行修改

    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",      # 引擎
            "NAME": "mydatabase",                      # 数据库的名字
            "USER": "mydatabaseuser",                  # 用户名
            "PASSWORD": "mypassword",                  # 密码
            "HOST": "127.0.0.1",                       # 数据库在哪一台服务器上(这里是本机127.0.0.1)
            "PORT": "3306",                            # 端口号
        }
    }
  3. 基于Django操作数据库表

    (1)创建表
    在models.py文件中,写上代码:

    from django.db import models
    ​
    class UserInfo(models.Model):
        name = models.CharField(max_length=32)
        password = models.CharField(max_length=64)
        age = models.IntegerField()

    然后在终端执行下面两条命令(注意要在mysite目录下执行)
    python manage.py makemigrations

    python manage.py migrate

    然后就创建成功


    (2)删除表
    把models.py文件里,需要删除的表对应的类注释掉,然后重新执行,makemigrations命令就好了~ 同理,要删除表的行或列,都可以这样。

    像这样:


    (3)修改表
    当要为一个已经存在的表(已有数据)新加一行或一列时,直接加在class里面运行makemigrations命令,会有两个选择:

    选择1:要输入一个值,使其新增的行或列都填入该值。
    选择2:退出本次执行,在源码中加一个default默认值。
    height = models.IntegerField(default=0)

    如果charfield需要加默认值,可以这样写:
    name = models.CharField(max_length=32,default='Default Name')

    PS: 如果需要添加一行默认为空的行或列,可以这样写:
    data = models.IntegerField(null = True,blank=True)
    在models.py文件中,写上代码

  4. 操作表中的数据

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

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

相关文章

在Windows系统上生成SSH秘钥

SSH秘钥是指在SSH协议中使用的加密密钥,用于实现安全认证和数据加密。SSH秘钥通常指的是一对密钥:公钥(Public Key)和私钥(Private Key)。 使用以下命令生成SSH密钥 输入下面命令行生成SSH秘钥&#xff0c…

slot 插槽的方式

当组件作为标签使用时,子组件中用slot标签占一个位置,父组件可以在此填充数据,父组件未填充数据,有默认数据 则显示默认数据 具名插槽:子组件中slot标签有name属性,如name“title”,父组件可以用…

Spring面试篇章——Spring基本概述

Spring 的基本概述 Spring学习的核心内容—一图胜千言 IOC:控制反转,可以管理 Java 对象AOP:切面编程JDBCTemplate:是Spring提供一套访问数据库的技术,应用性强,相对好理解声明式事务:基于IOC …

操作系统篇--八股文学习第十一天|进程调度算法你了解多少,进程间有哪些通信方式,解释一下进程同步和互斥,以及如何实现进程同步和互斥

进程调度算法你了解多少? 答: 先来先服务:按照请求的顺序进行调度。 这种调度方式简单,但是能导致较长作业阻塞较短作业。最短作业优先:非抢占式的调度算法,按估计运行时间最短的顺序进行调度。 但是如果…

selenium之批量上传文件

在UI自动化测试过程经常会有上传附件的操作,针对附件上传的场景,通常可以归为几类: 场景一:只上传一个附件场景二:上传固定几个附件场景三:上传动态数量的附件 2.针对以上几种场景,以动态文件数…

【iOS】APP仿写——学生管理系统

前言 学生管理系统和C语言学生管理系统要求相似,需要实现增删改查排序功能,这个仿写比较简单,但通过这个仿写中的限制输入的要求,初步了解了正则表达式。 注册、登陆界面 这个界面和3G share相同,这里就不多做解释了…

C语言 | Leetcode C语言题解之第309题买卖股票的最佳时机含冷冻期

题目&#xff1a; 题解&#xff1a; int maxProfit(int* prices, int pricesSize) {if (pricesSize 0) {return 0;}int f0 -prices[0];int f1 0;int f2 0;for (int i 1; i < pricesSize; i) {int newf0 fmax(f0, f2 - prices[i]);int newf1 f0 prices[i];int newf2…

芋道源码yudao-cloud 二开笔记(Feign服务调用,如何定义一个 API 接口)

在yudao-cloud如何定义一个Api接口&#xff0c;提供给另一个服务去调用&#xff1f;下面是 yudao-module-syetem系统服务 调用 yudao-module-infra文件服务的示例&#xff1a; 首先需要在服务提供者yudao-module-infra定义好对应的api&#xff0c; 第1步&#xff1a; cn.iocod…

c++中的Stack与Queue

目录 一queue与stack&#xff1a; 1.queue介绍&#xff1a; 2.queue模拟实现&#xff1a; 3stack介绍&#xff1a; 4stack模拟实现&#xff1a; 二priority_queue&#xff08;优先队列&#xff09;&#xff1a; 1介绍&#xff1a; 2仿函数&#xff1a; 3模拟实现&#…

学懂C语言(三十三):C语言 递归详解

目录 一、C语言递归 1、语法格式 2、流程图 示例1&#xff1a;数的阶乘 示例2&#xff1a;斐波那契数列 二、递归的基本要素 三、递归的工作原理 四、递归的优势与劣势 五、递归的应用示例 六、递归与非递归&#xff08;迭代&#xff09;的比较 一、C语言递归 递归指…

Navicat 在整个数据库中查找字符

Navicat 在整个数据库中查找字符 1.首先打开Navicat,连接目标数据库。2.选择工具选项卡&#xff0c;选择在数据库或模式中查找。3.查找前填入关键字信息&#xff0c;点击查找4.双击查找到数据&#xff0c;进行查看 说明&#xff1a;当我们知道数据库有数据的关键字&#xff0c;…

只有经历了无数超预期的BUG才知道Hutool有多香

目录 Hutool资源 为什么要Hutool Hutool核心模块 代码精进之道 如何更上一层楼 Htool官网是这样介绍自己的&#xff1a; Hutool是一个小而全的Java工具类库&#xff0c;通过静态方法封装&#xff0c;降低相关API的学习成本&#xff0c;提高工作效率&#xff0c;使Java拥有…

反序列化靶机serial

1.创建虚拟机 2.渗透测试过程 探测主机存活&#xff08;目标主机IP地址&#xff09; 使用nmap探测主机存活或者使用Kali里的netdicover进行探测 -PS/-PA/-PU/-PY:这些参数即可以探测主机存活&#xff0c;也可以同时进行端口扫描。&#xff08;例如&#xff1a;-PS&#xff0…

(~_~)

一、用不同url头利用python访问一个网站&#xff0c;并把返回的东西保存为 requests库 主要用于http发送请求和处理响应 1.发送get和post请求 requests.get(目标网址) requests.post(url,data) post于get不同的是get一般用来请求获取数据&#xff0c;而post相当于带着数…

WEB前端14-Element UI(学生查询表案例/模糊查询/分页查询)

Vue2-Element UI 1.可重用组件的开发 可重用组件 我们一般将可重复使用的组件放在components目录之下&#xff0c;以便父组件的灵活调用 <!--可重用组件一般与css密切相关&#xff0c;使用可重用组件的目的是&#xff0c;将相似的组件放在一起&#xff0c;方便使用-->…

SYD88xx代码复位不成功和解决办法

原来的复位代码如下: void ota_manage(void){#ifdef _OTA_if(ota_state){switch(ota_state){case 1 : #if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)dbg_printf("start FwErase\r\n");#endifCmdFwErase();#if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)db…

计算机毕业设计选题推荐-社区停车信息管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Linux 内核块设备

磁盘&#xff08;disk&#xff09;是指利用磁记录技术存储数据的存储器。 磁盘是计算机主要的存储介质&#xff0c;可以存储大量的二进制数据&#xff0c;并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘&#xff08;Floppy Disk&#xff0c;简称软盘&#xff09;…

能交易场外个股期权标的有哪些?

目前国内的期权市场能交易场外个股期权标的有除去ST类股票外&#xff0c;一般包括沪深3000多只个股以及股票指数&#xff0c;在交易日内且个股开盘的情况下可以报价购买。不过&#xff0c;由于场外个股期权是非标准化合约&#xff0c;具体的可交易股票名单可能会根据需求有所不…

请转告HPC计算AI计算单位,选对存储事半功倍

U.2 NVMe全闪混合统一存储GS 5000U是Infortrend产品中一款高性能机型。得益于搭载强劲的第五代IntelXeon处理器&#xff0c;以及支持PCIe 5.0、NVMe-oF、100GbE等多种特点&#xff0c;GS 5000U单台块级性能可达50 GB/s的读、20 GB/s的写&#xff0c;以及1300K的IOPS&#xff1b…