本文主要是介绍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缓存的广发用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!