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

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创