Python之后端Django(五)

Day/5

“session的概念”:它是基于cookie实现的,它是存储在服务器端的,sessionID会被存储到客户端的cookie中

“原理”

第一次请求的过程
1.用户第一次请求服务器的时候,服务器根据用户提交的相关信息,校验无误后创建对应的
Session
2,在设置Session的同时(此处做了两件事:sessionID会被服务器塞到响应的头部,生成session信息),服务器会在响应头中设置唯一标识信息SessionID
返回给浏览器
3,浏览器接收到服务器返回的sessionID信息后,会将此信息存入到Cookie中,同时Cookie
记录此SessionID属于哪个域名
第二次及其之后的过程
4,当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在Cookie信息,如果存在自
动将Cookie信息也发送给服务端,服务端会从999的2弗赫02征裙视摄根据sessionID查找
对应的Session信息,如果没有找到说明用户没有登录或者登录失效,如果找到Session证明用户已
经登录可执行后面操作
#核心:sessionID是连接Cookie和session的一道桥梁

#注意:第一次设置session的时候就可以读取到

问题:为什么session_id需要通过请求对象去获取或者设置,请求对象可是通过客户端发出去的?

1、session依赖于cookie

2、当读取session的时候,需要通过请求对象带来的cookie中的session_id去读取数据库中的session信息,如果读取不到则代表session失效或者并未生成

3、当设置session的时候,会生成一个session_id,服务器会通过response对象设置到cookie当中,并保存到浏览器里

其他操作:

1、清除所有session,在存储中删除值部分·
request.session.clear()
2、清除session数据,在存储中删除session的整条数据·
request.session.flush()
3、删除session中的指定键及值,在存储中只删除某个键及对应的值。
del request.session[‘键’]
4、设置session的有效期
request.session.set_expiry(value) 默认是两周

类视图:

“问题”:过去,一个视图中可以使用分支结构处理两种业务逻辑,但是可读性和复用性很差!

“解决思路”:django使用了类视图

“类视图使用方式”:

1、必须继承父类View #需要导包 from django.views.generic import View

2、在子路由中需要使用as_view() 添加

语法格式固定 views.类名.as_view() # 返回的是一个视图函数名

3、必须有返回值

“语法格式”:

类视图view写法:

from django.views.generic import View
class Registerview(View):""类视图:处理注册""def get(self,request):""处理GET请求,返回注册页面""return render(request,'register.html')def post(self,request):"""处理POST请求,实现注册逻辑"""return HttpResponse('这里实现注册逻辑')

路由写法:

urlpatterns[#视图函数:注册url(r'register/$',views.register,name='register'),#类视图:注册url(r'register/$',views.RegisterView.as_view(),name='register'),
]

中间件:

“概念”:是介于request和response处理之间的一道处理过程,它位于web服务端和url路由层之间

官方网址:https://docs.djangoproject.com/en/3.1/topics/http/middleware/

“执行程序”:请求自上而下,响应自下而上

‘语法格式’:

def simple middleware(get_response):#此处编写的代码仅在Django第一次配置和初始化的时候执行一次。def middleware(request):#计处编写的代码会在每个请求处理视图前被调用。response get_response(request)#此处编写的代码会在每个请求处理视图之后被调用·return responsereturn middleware

例子:在users应用中新建一个middleware.py文件

def my_middleware(get_response):print('init被调用')def middleware(request):print('before request被调用')response get_response(request)print('after response被调用')return responsereturn middleware

“关于中间件的注意事项”:

1、中间件的书写位置没有强制要求,每个公司有自己的规定

2、写好的代码需要注册,在settings.py中的MIDDLEWARE参数里注册

注册的语法格式(固定):子应用名.手动创建的中间件的文件名.文件内定义的函数名

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

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

相关文章

vue2获取视频时长

使用HTML5的video标签和JavaScript&#xff1a; <template><video ref"video" autoplay controls loop muted loadedmetadata"getVideoDuration"><source src"https://desktop-yikao.oss-cn-beijing.aliyuncs.com/avatar/kaissp.mp4&q…

详解SVN与Git相比存在的不足

原文全文详见个人博客&#xff1a; 详解SVN与Git相比存在的不足截至目前&#xff0c;我们已既从整理梳理的SVN和Git在设计理念上的差异&#xff0c;也重点对二者的存储原理和分支管理理念的差异进行深入分析。这些差异也直接造成了SVN和Git在分支合并、冲突解决、历史记录管理…

山西大学—双一流大学,考数据结构+C语言。山西大学计算机考研考情分析!

山西大学&#xff08;Shanxi University&#xff09;&#xff0c;位于山西省太原市&#xff0c;是中国办学历史最悠久的高等学府之一&#xff0c;是国家“双一流”建设高校&#xff0c;教育部和山西省人民政府共同建设的“部省合建高校”&#xff0c;山西省重点建设大学&#x…

算法刷题笔记 树的重心(树的优先遍历,C++实现)

文章目录 题目描述基本思路实现代码 题目描述 给定一颗树&#xff0c;树中包含n个结点&#xff08;编号1∼n&#xff09;和n−1条无向边。请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。重心定义&#xff1a;重心是指树中的一个结…

掌握SQL Server性能监控:自定义性能计数器的实现

掌握SQL Server性能监控&#xff1a;自定义性能计数器的实现 在数据库管理中&#xff0c;监控数据库性能是确保系统稳定运行的关键。SQL Server提供了丰富的性能监控工具&#xff0c;但有时这些工具可能无法满足特定的监控需求。这时&#xff0c;自定义性能计数器就显得尤为重…

JVM监控及诊断工具-命令行篇-jstack命令介绍

加粗样式 JVM监控及诊断工具-命令行篇04-jstack&#xff1a;打印JVM中线程快照 一 基本情况二 基本语法 一 基本情况 jstack(JVM Stack Trace)&#xff1a; 用于生成虚拟机指定进程当前时刻的线程快照(虚拟机堆栈跟踪)。 线程快照就是当前虚拟机内指定进程的每一条线程正在执…

Scrcpy adb server version (41) doesn‘t match this client (39); killing...

通过Snap 在Ubuntu上安装 scrcpy之后&#xff0c;启动会导致无法同时 scrcpy和adb logcat 过滤日志 目前最新的安装的platforms-tools下面的adb 版本最新都是 adb 41版本 解决办法&#xff1a; 在这里链接里面 下载 adb 1.0.39 版本&#xff0c;替换 /home/host/Android/Sdk/…

新手小白的pytorch学习第七弹------分类问题模型

目录 1. 准备分类数据1.1 输入和输出的形状 shape1.2 将数据转换为张量&#xff0c;同时将我们的数据集转换为训练集和测试集 2 创建模型方法一&#xff1a;自定义forward()方法二&#xff1a;nn.Sequential()方法三&#xff1a;自定义forward()nn.Sequential() 用 pytorch 使用…

基于A律压缩的PCM脉冲编码调制通信系统simulink建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1A律压缩的原理 4.2 PCM编码过程 4.3 量化噪声与信噪比 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#…

python项目读取oracle数据库方法(cx_Oracle库实现)

目录 创建一个python项目&#xff0c;并配置运行环境 查看oracle对应数据库版本&#xff08;该标题下内容只是为了查看版本&#xff0c;不用在意&#xff09; 从oracle官网下载对应版本的oracle客户端 解压下载的压缩包&#xff0c;并获取依赖 将依赖文件导入python项目运…

82. UE5 RPG 实现角色升级系统(下)

书接上回&#xff0c;在上一篇博客里&#xff0c;我们实现了角色升级的基础的功能。给敌人增加的经验奖励配置&#xff0c;并且在敌人死亡时&#xff0c;能够将经验通过事件传递给击杀者&#xff0c;玩家定义了被动技能&#xff0c;在被动技能中接收传递的事件&#xff0c;通过…

iOS 开发包管理之CocoaPods

CocoaPods&#xff08;Objective-C 时期&#xff0c;支持Objective-C和swift&#xff09;&#xff0c;CocoaPods下载第三方库源代码后会将其编译成静态库.a 文件 或动态库框架.framework 文件 的形式&#xff0c;并将它们添加到项目中&#xff0c;建立依赖关系&#xff0c;这种…

Redis实现用户会话

1.分布式会话 (1)什么是会话 会话Session代表的是客户端与服务器的一次交互过程&#xff0c;这个过程可以是连续也可以是时断时续的。曾经的Servlet时代&#xff08;jsp&#xff09;&#xff0c;一旦用户与服务端交互&#xff0c;服务器tomcat就会为用户创建一个session&#…

开源PDF解析工具marker 和 MinerU的解析效果对比

RAG中的文档解析需求&#xff1a;需要的是文档的完整段落&#xff0c;标题&#xff0c;图片&#xff0c;表格。我们希望删除的是md格式&#xff0c;或者josn格式。 MinerU 和 maker恰好。都是能够满足此需求的开源工具。这篇文章分享一下对两者的对比。整理出来目前还存在的问题…

RPG素材Unity7月20闪促限时4折游戏开发资产兽人角色模型动画休闲放置模板物理交互流体水下焦散VR界面UI2D模板场景20240720

今天这个是RPG素材比较多&#xff0c;还有一些休闲放置模板、FPS场景素材、角色模型、动画、特效。 详细内容展示&#xff1a;www.bilibili.com/video/BV1Tx4y1s7vm 闪促限时4折&#xff1a;https://prf.hn/l/0eEOG1P 半价促销&#xff1a;https://prf.hn/l/RlDmDeQ 7月闪促…

可再生能源工厂系统 (REPS) - 项目源码

狗头警告,这是VIP文章! 说明: 文件1: REPS_2024.pdf 可再生能源工厂系统 (REPS) 概述 可再生能源工厂 (REP) 是一个多代能源系统工厂,负责为城市、工业等生产可再生能源。可再生能源通常在世界各地的任何地点都可获得,具体取决于类型。此外,与常规能源相比,使用可再生…

【Flask项目】文件分享系统(二)

前一篇文章简单分析了基于Flask的文件分享系统&#xff0c;功能设计的很简单&#xff0c;就是浏览目录&#xff0c;支持文件的上传和下载&#xff0c;那么用flask该如何来实现呢&#xff0c;其实也很简单。 一个Flask程序必须包含实例、路由、视图函数、响应&#xff0c;才能正…

探索Perl的文件系统插件:灵活的系统扩展

探索Perl的文件系统插件&#xff1a;灵活的系统扩展 Perl是一种高度灵活和强大的脚本语言&#xff0c;它提供了丰富的API来处理文件和目录。文件系统插件机制是Perl中一个非常有用的功能&#xff0c;它允许开发者通过插件扩展文件系统的功能。本文将详细介绍如何在Perl中使用文…

谷粒商城实战-Vue学习过程中踩坑记录

一&#xff0c;自闭合的<script>标签 第一次使用Vue&#xff0c;按照步骤引入vue.js&#xff0c;创建div&#xff0c;创建Vue对象&#xff0c;但是未达预期效果。 插值表达式{{name}}没被替换为data对象中的属性值。 F12看了下网页源代码&#xff0c;发现创建Vue对象的…

OpenAI突发新模型GPT-4o mini,GPT-3.5退役!

OpenAI突发新模型&#xff0c;全面取代老去的GPT-3.5——GPT-4o mini&#xff01; 免费用户已可使用GPT-4o mini模型。 GPT-4o mini&#xff0c;能力接近原版GPT-4&#xff0c;价格却要便宜一个数量级&#xff1a; GPT-4o mini:每百万输入tokens&#xff0c;15美分&#xff0…