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

相关文章

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

Springboot中Jackson用法详解

《Springboot中Jackson用法详解》Springboot自带默认json解析Jackson,可以在不引入其他json解析包情况下,解析json字段,下面我们就来聊聊Springboot中J... 目录前言Jackson用法将对象解析为json字符串将json解析为对象将json文件转换为json

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit