Django的request.session缓存的广发用法

2024-02-02 01:28

本文主要是介绍Django的request.session缓存的广发用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

相信同学们在学习PythonWeb开发的时候和我一样会遇到许多问题,今天我这边举几个例子涉及到session缓存的问题,由于当时并没有接触session缓存的技术内容,所以往往头大,一时间不知带如何解决,老师也会告诉我使用缓存解决,可能自己太懒了吧,不愿意接受新技术,所以也就一直没有去接触,但是后来随着自己因为副业和工作的需求,迫使自己不得已必须去学习Session缓存以及Cookie会话等内容,本次博客将会对session缓存的基本使用和原理去做一个简单的讲解!

Session的主要使用:

用处其一:中间件的使用

比如我们在做网站的时候,我们规定如果你要是没有登陆注册便不被允许访问后续或者别的页面内容,那么此时此刻便需要session缓存的功能了,我们通过在PythonWeb框架里(如Django)使用request.session()方法来检查我们的网页的数据信息缓存里有没有我们用户注册的信息(另外我们在浏览器访问任何网页时,浏览器会获取的session和cookie的),如果检测到网页里有我们的注册信息便可以访问后续或者别的页面,但是如果没有检测到便可以弹出拒绝访问或者强制性让我们返回或者重定向某一个指定的页面。

比如如下的代码:

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import render,redirect
import re
class UserMW(MiddlewareMixin):def process_request(self,request):path = request.path_infoif path == '/myApp/login/' or path == '/myApp/registry/' or re.search('^/admin.*',path):return Noneelse:if not request.session.get('username'):return redirect('login')return Nonedef process_view(self,request,callback,callback_args,callback_kwargs):return Nonedef process_response(self,request,response):return response

在上面的代码里,我会规定了如果路劲为

'/myApp/login/' or '/myApp/registry/' or admin(后台)则正常访问,因为这些登录以及注册和后台的页面一般是没有安全或者隐私数据的,但是规定了如果网址栏目输入的网址不是以上的我们在检测一下浏览器的缓存里有没有注册登录的信息,如果有的话说明以及登陆过了,便可以在网址栏目里输入网页的任意一个页面的url,否则将重定向强制返回login的登录页面。在代码里我们看见了request.session的代码字符,没错request.session就是获取我们session缓存里用户信息的,username则是我们在登录时request.session['username'] = user.username所定义规定的。不要忘了最后要在settings的中间件middreware去配置我们写的中间件函数的位置哦。
用处其二:登录与否的前端显示状态

我们在做web开发时经常会遇到这样的一个情况,在你没有登陆时,我们的个人状态那里会显示登录挥着注册字样的内容,登录之后则会显示我们的头像或者我们的昵称等内容,其实这些也是和我们今天要讲的session有紧密关联的,通过上面的介绍相比我们现在已经有了一点感觉啦,没错就是通过我们的session缓存看浏览器里是否有登录注册的信息,有的话就显示个人的头像或者昵称,没有的话就显示登录/注册的文本内容,我们看如下代码:

            <ul class="navbar-nav  d-flex dropdown" style="--bs-scroll-height: 100px;margin-right: 30px">{% if request.session.name %}<a class="nav-link dropdown-toggle" href="#" id="navbarScrollingDropdown" role="button"data-bs-toggle="dropdown" aria-expanded="false">{{ request.session.name.name }}<img style="border-radius: 50%" src="/media/{{ request.session.name.photo }}" alt="" width="40"height="40"></a><ul class="dropdown-menu" aria-labelledby="navbarScrollingDropdown"><li><a class="dropdown-item" href="{% url 'pswd_update' %}">修改密码</a></li><li><a class="dropdown-item" href="{% url 'logout' %}">退出登录</a></li></ul>{% else %}<a class=" btn btn-outline-secondary" href="{% url 'login' %}">登录/注册</a>{% endif %}</ul>

如上代码实在pythonweb的前端页面所写,在第二行我们发现如果获取到我们的注册信息,就显示我们的用户名和头像图片,否则就显示登录/注册内容,另外提醒一下,在pythonweb前端写呢的时候一定要遵循其模板哦,比如在Django框架写,就要遵循django模板语言的。

结尾:

session的用法和作用有很多,以上讲的主要就是同学们在做简单的Web项目会90%遇到的情况,另外在做课设或者毕设都是极大可能使用到的,好啦,今天的内容就分享到这里啦,有什么问题可以留言或者私信我,看到会第一时间恢复的,提前祝各位新年快乐!

这篇关于Django的request.session缓存的广发用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/669077

相关文章

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的